maybe $value can be anything.
maybe split Datum related methods to trait.
remove the Datum related methods from Dao and DaoInterface, and create DatumInterface.
support for on{Event} hook; documented in the README.md.
moved Builder's methods to DaoInterface.
Revert "moved Builder's methods to DaoInterface."

This reverts commit b3cd04d9e7f9521d2f34f32302bfe313d39fc1d2.
test event hooks and scopes in Dao.
document how to use scope.