Rely on peer auth in development and test environments

It's simpler to have a postgres role with the same name as the Unix
user and use peer authentication in these environments. This is
different from production, but should work for CI as well.

To do this we need to not specify user, password or a host to use
for connecting to the database.
Use template0 to create the database in dev and test

It's not possible to specify encoding when using template1, because
it might conflict with an encoding set in the template. The Puppet
module we use in production defaults to template0, so this is still
consistent between environments:

    https://github.com/puppetlabs/puppetlabs-postgresql/blob/3.4.2/manifests/server/db.pp#L11
Extend rake db:create to enable pgcrypto extension

This extension can only be enabled by a superuser, but we don't want
to be running the app or tests as a superuser, so we need to do
this as the postgres user.

This allows us to use db:setup and db:reset as usual in dev and test.

This is a temporary measure and can be removed when we no longer need
pgcrypto (after removing path_hash).
Drop and recreate the database each time in CI

db:schema:load isn't able to keep the schema completely as it is
in the schema file, which is particularly a problem for branch
builds. Dropping the database each time is cleaner and ensures that
tests are running with only the specified tables in the database.
Now that we are enabling pgcrypto as part of db:create, db:reset
can do this for us.
Merge pull request #376 from alphagov/postgres_use_ident_auth_for_dev_and_test

Switch to using peer authentication in dev and test for Postgres