Entity types and traits

This PR is submitted for feedback on how model types and traits are organized and broken down.
There are a lot of changes and refactorization for the models. But the main idea is to break down Queriables into a collection of smaller traits in a logical manner, and adding types to make defining new models to the db a bit more straight forward and with less boiler plate code.

Main Changes:
- Entity and NewEntity abstract classes.
- Entity table traits split away from Queriable.
- Existing models use the new traits and their case classes extend Entity and NewEntity. This results in much much less code having to be written by the model itself.