Add PGConnection abstraction

To keep track of connection state.  Also fail on unhandled connection
(authentication) messages.