Add `Repo.adapter_hook/2`

Enables hooking of adapter functions for logging and debugging.

Questions:

* Is `adapter_hook` the best name?
* Should you be able to pass the arguments to the anonymous function in `adapter_hook`? This would enable you to, for example, change the SQL code of a query before it's sent to the DB.

/cc @devinus @josevalim