[WIP] Rewrite driver code, move to driver.py, introduce system builder classes

Hey,

This is my (very initial) implementation of `SystemBuilder`.... very WIP, will continue to implement the ideas we discussed.

Thanks
I wonder if setting a default parameter value might be better done in the constructor with a default value?  Not sure.