Remove `path_hash` everywhere but the DB

This is a re-opened #452 (Github won't allow a reopening where the branch has seen a force-push).

`Transition::Import::HitsMappingsRelations#connect_mappings_to_host_paths!` only [writes to mappings where `mapping_id IS NULL`](https://github.com/alphagov/transition/blob/4e55cf3bf5a6019fcc620b072e69250aba6892a5/lib/transition/import/hits_mappings_relations.rb#L33). The migration now uses its own [`populate_canonical_paths!`](https://github.com/alphagov/transition/pull/453/files#diff-529c3c39f90bc90d01a4cd42cc8cf3c7R5) with batch sizes of 10K / ~650K to fill paths as fast as a Ruby solution is able.

### DB

* Leave `hits` and `mappings` `path_hash` `NULL`able so that existing
  processes are not disrupted
* Add `canonical_path` to `host_paths` to replace `c14n_path_hash`
* Populate it using the private
  `HitsMappingsRelations#connect_mappings_to_host_paths`
* Move the UNIQUE `host_paths` index from `(host_id, path_hash)` to
  `(host_id, path)`
* Cope with any possible rollback (including backfilling `path_hash` for `hits`
  and `mappings` in the migration's `down`)

### Code

* Remap usages of `host_paths.c14n_path_hash` to
  `host_paths.canonical_path`
* Replace usages of `path_hash` with appropriate plain
  `*path` alternatives
We can add a migration to drop the `pgcrypto` extension if it exists ([as we did for enabling it](https://github.com/alphagov/transition/blob/master/db/migrate/20140613165318_add_postgres_crypto.rb#L3)), but Transition won't be able to run it because the `transition` postgresql role isn't a superuser, which would make the deploy fail. We would need to remove the extension with Puppet in advance instead. Our Puppet postgres module [doesn't currently support dropping extensions](https://github.gds/gds/puppet/blob/master/modules/govuk_postgresql/manifests/extension.pp) so that will require a bit of work.