Implement fallback_application_name

This is a libpq-compatible parameter which can be used by generic
programs to provide a "default" application_name the user can override
via application_name or PGAPPNAME.
Fix typo in Errors chapter
Add support for LISTEN/NOTIFY

This commit adds support for the PostgreSQL LISTEN/NOTIFY mechanism by
adding two new user-exposed 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.  Its use is discouraged.
  - Listener is the higher-level interface which uses ListenerConn
    underneath to provide a simpler to use interface, supporting
    automatic reconnection.  In order to do that, it also maintains a
    list of channels it is already listening on.

Significant contributions and ideas from Tommie Gannert.  Ideas and
valuable feedback from Kamil Kisiel, Maciek Sakrejda and Paul Hammond.
gofmt notify_test.go
Fix merge conflict in README

I failed to notice this in commit 224d938d4ee50f27e668d0ffa4142822f11.
Remove references to senderToken

This was replaced with senderLock at some point during the development,
but some old comments weren't fixed.
Fix typo in error message
Expose quoteIdentifier

It's not possible to parameterize identifiers in PostgreSQL, so to
specify them dynamically one has to properly escape them before
interpolating them into the SQL string.  There's no reason to force
everyone to reinvent the wheel, so export our implementation.

Per discussion in #232.
Make the common error messages more consistent

There are still several cases where the user could see an error not
prefixed with "pq: ", but there's no real reason why we couldn't fix
these instances.
Don't allow zero bytes in the result of QuoteIdentifier

Because a protocol-level String is null-terminated, there would have
been a possibility of a specially crafted input string manipulating the
protocol packet.  However, the worst thing I can see is that the
attacker might be able to specify the input parameter types of a query
in a Parse message, which doesn't seem too problematic.
Use strings.IndexRune instead of strings.IndexByte

IndexByte didn't exist pre-1.2.
add support for connect_timeout parameter
Add Timothée Peignier to the list of contributors
Gofmt conn.go
Avoid concurrent use of the scratch buffer in copyin.Close

As noted in #235, previously both the Close() and the concurrently
running resploop could be trying to operate on the scratch buffer if a
message happened to arrive from the server just as we were sending the
CopyDone message.  Fix by bypassing the scratch buffer for CopyDone.
Make connect_timeout apply to the entire connection procedure

As committed in 9d56fa64939666101a594570df8197, only the TCP connection
establishment part was affected by the timeout.  The new behaviour is
more intuitive and matches that of libpq's.
Improve comment about deadline in dial()

I accidentally wrote "timeout" when I meant "deadline", but I think this
is even better.
Fix bug in dial() when connect_timeout is set

I completely broke this in commit 344cc7146c482865d57b20ef84b5e600.
gofmt
Add ErrorCode.Class()

This returns the "class" of an error, which supports Name() to get the
"condition name".