#184 Review PR

This PR is created for initial reviewing of the changes of #184 because #184 includes many external changes and hard to review.
Does this mean C++11 will be enabled for MSVC? Should we provide a corresponding compiler flag for MSVC?