about to create a filter for model.
made abstract a real abstract.
add FilterAbstract for filters.
maybe add more filter events.
initialize query in Model so that query can be modified before fetch data.
add option to reset query when retrieving it.
create Filter directory for filters.
moved Filter{Interface|Abstract} to Filter directory.
use filter for created_at and updated_at on model.
moved created/updated logic to the filter objects;
removed unused methods from Property, Helper, and test classes.
split events to insert->save as well as update->save
so that filter maybe applied in different timing.
convert DateTime object to string in filter.
set DateTime object in {Update|dCreated}At filters.
convert DateTime object to string filter.
cache model filters as cache-able.
use DI to get these filters in the model.
refactor {Created|Updated}At using abstract.
shorten some code.