Major refactor - Changes include support support for dependency injection, unit testing and mocking, using moq, ninject and MSTest. Significant documentation improvements. miscellaneous bug fixes.