updated the Instance Collection class to extend Doctrine ArrayCollection
moved complexity for initial object generation and introspection into the Instance class
broke Instance#asObject method into smaller pieces for clarity
rewrote the Instance#asObject method to use new instantiator classes to create new instances
Merge branch 'refactor-instance'
Refactored the Instance class to be an actual actor in the system, rather than just a data bucket. It is now responsible for 'rendering' itself as an object, and uses a strategy pattern to determine how to instantiate itself.