Add support for savepoints

This adds `withSavepoint`, which acts sort of like `withTransaction` when you are already in a transaction.  Savepoint names are generated automatically, and are represented by the abstract `Savepoint` type.  More direct methods like `newSavepoint` are exported only from Database.PostgreSQL.Simple.Transaction.

Compatibility: This adds a field to the `Connection` type for generating savepoint names, so it will break any program that imports Database.PostgreSQL.Simple.Internal and creates its own `Connection` object.