-Wtautological-compare Fix

Due to the fact that unsigned integers cannot be less than zero, Clang was generating tautological comparison warnings in converter.hpp, as there are comparisons which determine whether an integer is less than zero, and depending on the template parameter those integers may be of unsigned type.

However, these comparisons are necessary so that the same code can handle signed integers.

To fix this, moved the checks for negative integers into a helper template class -- IsNegative.  This class has a constexpr static Check method, which determines if the given integer is negative.  A specialization of this class template for all unsigned integer types provides a version of this static method which unconditionally returns false.
Merge branch 'linux'

Merging the linux branch for fixes which allow successful compilation with Clang.