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.
Clarify materialized view name/purpose in spec

 * Name should reflect why it's there and what we use it for
Change Postgres::Relation.exist? to .exists?

 * Reads better in production code
 * RSpec's BuiltIn::Exist matcher will try both anyway, so no need for
   `should exists`