Make the handling of driver-only settings more consistent

There seemed to be two different ways these were handled.  Pick one of
them and embrace it.
Add support for sslcert and sslkey

This commit adds support for both automatically loading certificates
from ~/.postgresql/ and loading them from arbitrary paths by using
sslcert and sslkey (or their environmental equivalents PGSSLCERT and
PGSSLKEY).  If their paths are set explicitly, the files must exist or
connection attempts will fail.  The behaviour was designed to exactly
match that implemented by libpq.

Also add some basic testing for SSL features into Travis.  Previously
the SSL support was not tested at all.  The tests are not run unless
some special environment variables are set, since we can't run these
tests without special support.

James Pozdena (@jpoz) and Marko Tiikkaja (@johto).
Add James Pozdena to the list of contributors
Calculate the distro codename for APT
Add support for sslrootcert option and PGSSLROOTCERT env. variable
Fix documentation for sslcert / sslkey

All of the parameters are optional, so there's no need to mention it
separately for these two.
Add Charlie Melbye to the list of contributors
Add support for sslmode=verify-ca

This is like verify-full, except the Common Name isn't matched against
the "host" parameter.
Move environment variables to the env configuration
Fix setup for SSL tests in Travis CI
Add Chris Bandy to the list of contributors
Load crypto/sha256 in ssl_test.go

Go 1.0 doesn't seem to be automatically loading all the available hash
algorithms, which made the tests fail.  Fix by importing crypto/sha256.
Fix incorrect encoding of B.C. years
Avoid unnecessarily allocating readBufs for every row

In 7b56638b9451914e65985950a0d6c0c3833e96e9 I removed a completely
unnecessary allocation from recvMessage, but there was another
allocation done on every call.  Allow callers of recv1 to supply their
own readBuf where repeated allocations might be an issue, and implement
it for the "rows" object (where it's been proven to be one).
Reorganize code to avoid double errRecover()s

All callers of prepareTo() are already recovering from errors except
Prepare().  Avoid the overhead of double errRecover by making Prepare
handle it instead.
Fix a couple of test error messages
Don't bypass the prepared statement in stmt.Exec()

I fixed the Query case in 59dc557f48025f2793e034756cea8062643c53ca, but
it apparently didn't go the entire way.  Using the already-prepared
statement is both less surprising, and also *faster* than running
simpleExec().

This also means that there's no need to store the query inside the
"stmt" struct anymore, so get rid of it.
Re-enable previously disabled test

Seems like I accidentally committed this completely disabled.
Make TestErrorDuringStartup more resilient against different setups

While the previous coding would always work in Travis, there's no reason
to fail "go test" on other setups.
Change the type of saveMessageBuffer

It makes more sense to store it as a byte slice since that's how we
ultimately treat it.