Make solver criteria more abstract, and fallback if unsupported

Rather than an error-prone version check on the solver, be optimistic and
fallback to compat criteria at the first failure. This should be OK since
the solver fails early on bad criteria.

In the longer term, we want to hack into dose to get more control on how
it runs the solver
Add dose patch fixing assert breaking our fallback
Truncate the patch opam-version number in templates ("1.2" rather than "1.2.0")

this is consistent with the versioning scheme and avoids incompat between 1.2.0 / 1.2.0~beta for example.
Also, cleaner error message on bad opam-version