1. Ported to Boost.TypeTraits primitives for type inspection and simple
metaprogramming instead of local implementations. This effectively
drops any workarounds for compilers without support for partial template
specializations. Such compilers are long outdated.
2. Include more fine-grained headers from Boost.TypeTraits to optimize
compilation times.
3. Made numeric_distance function constexpr.
4. Updated the test accordingly (i.e. replaced the use of now removed local
components with Boost.TypeTraits). Also replaced lexical_cast with
standard streams to further reduce dependencies.
None of these changes should affect functionality.