Mostly a doc update, some structural changes.

Doxygen -hates- template specializations. This commit finally gets doxygen to properly document the unimplemented, unspecialized form of SDecodeStrat.

- Doxygen now defines UTFX_DOXYGEN when it is processing.
- Specializations that confuse doxygen are now ifndefed behind UTFX_DOXYGEN.
- Moved unimplemented, unspecialized form of SDecodeStrat to header. It is now documented and shows up properly in doxygen's output.
- Oscillating between using Detail:: namespace or not has been finalized. The encode/decode strats are meant to be used by clients if they want, so they are not simply implementation details. This usage of the Detail namespace has been removed.
Removed ref from UTF-8 decode strats.

- UTF-8 decode strats originally updated the char pointer as they decoded. However, if decoding failed, the location of the char pointer was then undefined. A previous commit moved updated the char pointer to Decode(), but did not remove the references. The references have now been changed to regular pointers.