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
Truncate the minor opam-version number in templates

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