Add SAVEPOINT (Fixes #56)

We needed this so I hacked it in and added a test case. I ran into trouble getting Mockery to correctly mock the object, so I had to change the tests up a bit.
If you reuse savepoint names, the old savepoint is replaced with the new one. I haven't tested, but I believe that would prevent rolling back transactions arbitrary levels > 1 and continuing with a parent transaction.

Relevant docs:
http://dev.mysql.com/doc/refman/5.0/en/savepoint.html