Define and explain template specialization in C++. When and why would you use it in an embedded context?