Fix headers for libstdc++
Use std::begin/end as std::cbegin/end aren't included in libstdc++
Migrate json_reader to std::codecvt specialisations
Validate unicode with std::codecvt instead of wstring_convert
Allow non-nothrow-swappable containers & run clang-format
Use alternate syntax for ifstream initialisation.

libstdc++ streams are non-movable
Remove mostly useless concept checking as it incorrectly uses declval
Work around lack of heterogeneous set lookup.
Also comment out some static_asserts that fail with libstdc++
Replace std::max with inline expression as libstdc++ lacks constexpr
Move codecvt stuff into header. Attempt to use an iconv GCC extension.
Workaround broken (overflowing) chrono literals in libstdc++ 4.9
Rearrange codecvt.hpp
Don't use non-utf8 performance test when <codecvt> isn't available
Use a cmake custom target for headers rather than an empty lib
Forgot to make codecvt campatible create_state a template
Silence some GCC warnings
Rewrite static_asserts on std::array::size().
gcc doesn't accept calling the function, whereas clang does.
Replaced with tuple_size<>
gcc doesn't accept string literals in a decltype expression.
Replaced with declval
Make sure array is zero initialised & therefore terminated
Reorder element type map
Reformat traits.hpp with clang-format