Lots of re-factoring

I will provide a detailed email for these changes. We are passing our
acceptance tests. We are only 77% on code coverage, because I still need
to complete a lot of tests for ArgumentParser. Almost every other class
is within 22% of having 100% coverage.