Merging reef-bridge into master

This includes all CPP code and bridge framework we built for .NET interop. 

Note that msbuild is required to build the .NET/CPP part of reef-breidge project. However, that will only be triggered when -PBridge profile option is used. Normal mvn build will simply skip the .NET/CPP codes. 
Why are we using C-style cast and `reinterpret_cast` interchangeably in this code? Can we stick to one way of casing?