Add support for LISTEN/NOTIFY

This commit adds support for the PostgreSQL LISTEN/NOTIFY
mechanism by adding two new interfaces:

  - ListenerConn is a low level interface which establishes
    a connection to a PostgreSQL server and only knows how to
    execute simple queries and wait for notifications.  This
    interface does not know how to reconnect, and does not
    maintain a list of the channels it is listening on.  This
    interface is also undocumented, as its use is heavily
    discouraged.
  - Listener is the higher-level interface which uses
    ListenerConn to provide a simpler to use interface,
    supporting automatic reconnection.  In order to do that,
    also knows the list of channels it is already listening
    on.

Significant contributions and ideas by Tommie Gannert.  Ideas
and valuable feedback from Kamil Kisiel and Maciek Sakrejda.
Rename ListenerConn.lock

The previous name was very misleading.
Attempt to document senderToken a bit better
Reorder states in setState

This should reflect the actual order in which these states should
always appear.
Fix bug in comment
Try to improve comments in ExecSimpleQuery
Rename first return parameter of ExecSimpleQuery
Add a comment clarifying that a non-main goroutine need not close
senderToken