Initial Code Check-in

Almost ready for release, but needs a few more interfaces
implementations coded and a nuget.