Improvements:
getById() supports second argument to get object only from cache. (false, if object is not in cache)
getOne(), getMany(), getManyByWhere() support additional suffix parameter. (Good for ordering and limiting)
setMany() introduced to set data to object from array or object. (Affects construct the same way)
getIsInDb() renamed to isInDb()
_preSet*() and _postSet*() have additional input for old value.
_preSave*() and _postSave*() have additional input for old value.
isDirty() introduced to check if object or one field is dirty. (set but not saved)
_preCreate*() and _postCreate*() triggers introduced in addition to _*Save*() triggers.
Many self::method() calls replaced with static::method() for better extendability.

Fixes:
getById() does not make a query if object is in cache already.
construct() (and setMany()) now ignore fields that are not in AR.
ID field can now be set when AR is completely new.