Reactive Slick

Here's the ongoing work on Reactive Slick.

/cc @cvogt for review later
The only entry points for execution are Database.run and Database.stream. If you use your own methods for these, you can easily implement master/slave switching. If we reified the effects at run-time (and got rid of the types instead), you could even wrap that back into a Database.