Support building with MSVC 2012

Few C++ 11 features were sacrificed:
- non-static initializers
- using
- unique_ptr uses get() method because there is
no overloaded ! or bool cast for it.