Apply type param for each PropertyDefinition [SERINA-11]
Add type param and prepareRawQuery [SERINA-11]

That allows us to use any query we want, rather than follow the
ORM-style paradigms
Add type param, add save() method [SERINA-11]
Add On Duplicate Key Update [SERINA-11]
Add test method for saving User object instances [SERINA-11]