Develop

Submitting for the purpose of a code review.  This implementation still isn't ready until we figure out a solution to https://github.com/timmolter/XChange/issues/271. I just wanted to go ahead and get some feedback as to what you would want changed.  Other than that it is a full implementation with tests and demos.