Add a trait abstracting over transactions and connections

This is implemented *in addition* to the intrinsic methods because
having to import a trait to call `prepare` sucks.

Closes #63