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".
Small editorialization of the error documentation
gofmt

Not sure I agree with this, but all glory to gofmt..
Don't ignore the return value of SetDeadline()

It is possible that the runtime has already closed this connection from
underneath us and we would end up with a broken connection in the pool
(since we don't convert timeouts into ErrBadConns).  Fix simply by also
returning the error from Open(); we should not have to worry about
getting timeouts after Open() has succeeded.
Build user_posix.go on Solaris

Per complaint from infolution.
Merge remote-tracking branch 'origin/master' into travis

Conflicts:
	conn.go