stop using thread_local because VS2013 is dumb
MSVC compat: don't use designated initializer lists
MSVC compat: #define ANSI colors out of existence for Windows
Merge branch 'type_template' into msvc