Extras refactor

Here is my proposal on a restructure.  It will allow for easier testing.  I did introduce a test that did discover a few undefined items, so this can clean stuff up pretty quick.

I hate how github doesn't show the file renames instead of a diff.
The problem is the units wont recalculate until they are called again.  Now this could be addressed by having them return Qt.binding() objects.  I am not sure how that will ripple up though.