Initial Commit of CSharp port.

This will be used to port it to Windows since the C++ part requires ATL which isn't available in the
Express version of VS 2010.