Backport ActiveRecord::Base#update_columns

* from ActiveRecord 4.x
* Supports quick, validation-free update of more than one column
  in a single UPDATE
Hits and mappings, together at last

* Hits may now belong to a mapping
* Establish three-step update for this belongs_to using new table/model HostPath/host_paths:
  * host_paths are created from hits (pure SQL)
    (host_paths is the smallest set of paths for a site that we can operate against)
  * host_paths' mapping IDs are created by ActiveRecord batch on c14n'd path
  * Hits' mapping IDs are refreshed from host_paths (pure SQL)
* Steps can fail independently (not transactionally) as they're idempotent
* HostPath is more or less our URL set, though can't reasonably be called that because
  although we could construct a complete URL set from this, it doesn't by itself have
  the component parts of a URL.
Show mapping-sensitive info on the hits page

* Hide errors that now have a mapping
* Indicate in muted-text what a hit was and what the mapping says now
* Text of "Check mapping" changes to Add Mapping / Edit Mapping as appropriate
HitsMappingRelations.refresh! should cope with c14n'd query string
Mappings update their hits on save

* Also unlink old hits when path changes
Import of either new hits or mappings should refresh relations
Refresh operations to $stderr, not logger.info

* Otherwise it doesn't look like anything is happening for minutes
Do linked hits updates in batch

* There may be many, and #find will be slow
Rename the rake task to match its class
Assume mapping immutability

* Means we're only triggering update of hits on create
Don't issue an UPDATE if no HostPath fields have changed
Simplify hits/mappings relations queries

* Simplify initial INSERT IGNORE (was using old joins from before move to HostPath)
* Simplify UPDATE to avoid WHERE (mySQL can only use one index)
* Ask mySQL to use the right index on update (feature added in 5.x)
Get down to only one extra mapping query per section

* Use includes(:mapping) in HitsController#hits_in_period
* Generates one IN query for all the mappings in the section
* Not as good as a .joins(:mapping).includes(:mapping) but that breaks counting for category.hits.any?
  (which appears to be one rabbit hole too far for today)
Skip Mapping callbacks by default

* They're a drag on test speed
* They're only needed for a couple of specs
* use need_mapping_callbacks: true on a describe block when required
Don't show mapping link button for homepage hits
Merge pull request #205 from alphagov/show-mapping-status-on-hits

Show mapping status on hits