So this version totally works

This is the almost final version 1. A lot of the features are complete
if not perfect.

TODO:
*Move all connections to a single object, and allow it to be passed in

*Create interface to build dynamic joins