feature-DBPerformance

Breaking out common functions into a QModelBase class.
Improving performance by removing reliance on GetColumn.
Adding unit tests.
Adding local caching of database objects as they get created.
Yep. There were a few iterations of this. I did it as a trait first, but thought a base class would be better. Will fix it.