Added BaseModel class and some minor hierarchical structure to models

It's not really possible to define things in BaseModel if the interaction classes (factory, selector, updater and validator) are to be static. So this is the best that can happen, unless we want the inner classes to not be static, and then they would have to conform to some common interfaces. This is the best way

Closes #53