PostgreSqlSliceStore: quicken conflict set store

Insert all conflict sets and relations to blocks in a single query using
a common table expression. Improves performance by 20x-40x.
PostgreSqlSliceStore: store slices in one query

Use a common table expression to store slices and relations in a single
query. Does not improve performance in small scale tests, but fewer
queries and no round-trip dependence will be important for concurrency.
PostgreSql stores: use one query for block flags

Combine queries checking for missing (unflagged) blocks into a single
query via a utility query. This allows PostgreSql store retrieval
methods to use the minimum possible two queries, important for
performance scaling.
PostgreSqlSliceStore: fix conflict set block relation

95b76c94cd701c634e7427d97ef93add105a2e4d combined conflict set insertion
into a single query with a common table expression (CTE).
Sub-statements in the WITH clause of a CTE only execute when required
by the main statement (including via another WITH statement), or
otherwise concurrently with the main statement. Consequently the main
conflict set to block relation statement did not select all of the
conflict sets inserted by the WITH clause. The main statement could
reference the WITH INSERT statement to force execution order, except
that requires that the statement have a RETURNING clause (even if
unused), which it cannot because djsopnet_sliceconflictset has a
conditional DO INSTEAD NOTHING RULE which does not yet support
RETURNING in PostgreSQL. The RULE could be replaced with a trigger
(which would allow RETURNING to be used), but constraint exception
triggers are significantly slower than DO INSTEAD NOTHING rules.

Instead use two INSERTs (in a single query) for conflict set creation
and block relation. Because this requires transmitting and parsing the
set tuples twice, this is ~15% slower per effective insert but
guaranteed correct.
SliceGuarantor: fix lost conflict sets

When extracting slices, slices were being translated to account for
block coordinates while conflict sets were not. Because slice
translation changes the slice hash, this caused conflict sets for block
sets with an upper left bounder other than (0, 0) to not be collected for
containing slices in requested blocks and thus discarded.

Fix by recreating conflict sets with correct hashes after translation.
Greatly increases the number of stored conflict sets and reduces the
percentage of slices without conflicts from ~70% to ~15% in the test
dataset. Greatly reduces the number of segments as fewer slice
combinations are viable segments due to conflicts.
Merge commit '5241c366b8ef1b40d4030bc04276d1b917e7c420'

* commit '5241c366b8ef1b40d4030bc04276d1b917e7c420':
  SliceGuarantor: fix lost conflict sets
  PostgreSqlSliceStore: fix conflict set block relation
  PostgreSql stores: use one query for block flags
  PostgreSqlSliceStore: store slices in one query
  PostgreSqlSliceStore: quicken conflict set store