[WIP] Add callbacks

I would like to introduce callbacks as a mean to perform actions before `update`, `insert` and `delete`.

Here is a first draft I am working on as a basis for discussion.

It is my hope that if I get this right, we can add:

- Serialisation (maybe that would be a good way to tackle hstore, json, ... data types)
- Timestamps
- Automatic validations?

ToDo:
- [x] Documentation
- [x] ~~Validations~~
- [x] ~~Add params to functions~~
- [x] Reconsider naming (CRUD vs. Repo methods)
- [x] Hook up callbacks to Repo (actually invoke them)
We want to return the model that has been modified by:

1. `Callbacks.apply_callbacks(..., :before_update)`
2. `adapter.update(...)`
3. `Callbacks.apply_callbacks(..., :after_update)`

Here the result is being thrown away.