Postgres helpers for materialized views

* Let us do Postgres-y things around views in a Ruby-ish way
* We can create them, check existence, get bodies for or refresh
  them
Materialized views rake task

* For any site where precompute_all_hits_view is true, precompute a view
  that only serves all hits, all-time
* Create if one doesn't exist, refresh if it does
Materialized views quote names correctly

* Allows us to handle odd characters in the view name
  (such as those caused by our own factories)
HitsController can use an all hits, all-time view

* Where the site says it's available via `Site#able_to_use_view?`
* Will previously have been computed as a materialized view by
  `Transition::Import::MaterializedView::Hits`
Replace materialized views rather than refreshing

Slightly slower, but simpler from a deployment point of view to have only one
task that updates the code of the view as well as the view results in one
transaction. If we didn't do this we'd need some kind of "recreate" task as well
as refresh, only to be run when view code had changed.
fixup! Materialized views rake task