Object reimpl

@macumber Here is the oft-delayed pull request. This shifts most of the work into the impl objects and documents the wrapper objects better. As far as I know everything is documented now, but I probably missed a few. I also implemented the code changes suggested in the static analysis (mostly adding ampersands). I had hoped that this would address SWIG's problem with generating too many nested if statements for the VS compiler, but it did not. The only sure fix is to not have any functions will lots of arguments, so that is what I did. All of #727 is possibly taken care of - I haven't seen any SWIG warnings about impl objects and the object that was causing all of the warnings about arguments is out for the foreseeable future.