Reworked the preferences main item container to be the same code we use
for the hoop properties table
Slowly hooking up the properties structure into both the preferences
dialog as well as the preferences object that's stored on disk
Reworked the way xml is managed, which is now a lot more centralized.
Extracted the properties management found in the HoopBase class and put
it into its own class. This way we can add serializable properties to
any class we want
Finalized the extraction of the properties classes so they can be used
by other parts of the program. It's now also active and being used by
the preferences dialog and structure