Allow forced explanation of maximal cliques

SolutionGuarantor may force explanation of maximal cliques, i.e.,
require that one slice in the clique is chosen by the solver.
ConflictSets now have a boolean to indicate whether they are maximal
cliques, which is false by default but true for MSER paths converted to
ConflictSets by ComponentTreeConverter. While in the general case these
constraints over maximal cliques of the conflict graph do not force
maximally explaining solutions, they are sufficient for graphs where
each maximal clique contains at least one unique slice (of which
component trees are a subset).

Force explanation also forces any slices not in a ConflictSet to be in
the solution.

Since currently only pairwise conflicts (edges in the conflict graph)
are stored in PostgreSQL, all ConflictSets retrieved from that store are
marked as not being maximal cliques.
PostgreSqlSliceStore: write conflict cliques

When associating slices to blocks, still store pairwise conflict edges
but also store origin ConflictSets as maximal cliques in PostgreSQL.
Conflict sets are still retrieved as pairwise conflicts.
PostgreSqlSliceStore: retrieve conflict cliques

Retrieve conflicts as cliques, which allows the same ConflictSets
originally stored by sopnet to be reconstructed, rather than just edges
from the conflict graph. This in turn allows explanation forcing for
maximal cliques.

Note that only conflict edges referenced by a conflict clique are
retrieved.
Fix end segments for first section

Store the section of SegmentDescriptions the same as for Segments: using
the higher (right slice) section number. Extract end segments for the
intersection interval to the left of the first stack section (z=0).
Update SolutionGuarantor to correctly include these segments in the
solution.
PostgreSqlSegmentStore: update section field

Update section field name to section_sup to reflect change from section
infimum to section supremum.