assume c++11
clang didn't like static members in anonymous structures, gave them names
WriteEvent template wouldn't resolve for temporary values without const decl in clang
added a few missing headers
nest X64Function in its own block to avoid clang errors related to goto usage
use custom __m128 struct on non-win32 platforms to provide element-wise access
explicitly cast param for set_constant to correctly resolve overloaded function