Database: Use a connection pool and add a Connection class

The pool currently only provides one connection. The app will continue to use
a single connection for almost everything. When a transaction is needed, a new
connection will be pulled from the pool.

Ref #49
Database: Add transaction support

Fixes #49
Managers: Support connection passing for transactions

Ref #49
Ticket: Wrap comment creation in a transaction