Created porting interface to interop with other languages. Some notes:
- A few reference parameters are changed to pointer types to be compatible
  with C# and to avoid copying objects when passed across language domains.
- C# interface uses IntPtr in the signature of PolicyFunc delegate which
  is essentially void*. However, it appears there's no workaround for this
  since the delegate has to be castable to the func pointer type defined
  in native code.
- Currently the interface is public so callers to MWT can see it. This is,
  however, required so that the managed assembly can interact with it. In
  the long run, we can have different compilation properties for C++
  library and C# so that C++ callers do not have access to them.