Clang using VC++ RTL currently does not support char16_t or char32_t

git-svn-id: http://svn.boost.org/svn/boost/trunk@86675 b8fc166d-592f-0410-95f2-cb63ce0dd405
Made reverse algorithm variant-aware.

git-svn-id: http://svn.boost.org/svn/boost/trunk@86678 b8fc166d-592f-0410-95f2-cb63ce0dd405