Remove inheritence from DataSource to ModelBuilder

/to @ritch 

This PR removes the inheritance from DataSource to ModelBuilder. The DataSource now embeds an instance of ModelBuilder which can be optionally passed from the DataSource constructor.  It makes possible for multiple data sources to share the same ModelBuilder instance. This way, we can create relations between model classes attached to different data sources.