Allow incomplete solutions in relevant commands (#451)
* Allow get with missing deps (with confirmation)
Up to now, trying to retrieve a release with non-solvable dependencies resulted
in an opaque "can't get a solution", leaving the only resort of doing an `alr
get --only`. With this patch, the best partial solution found is used and
displayed. The user can accept a partial deployment, understanding that the
build will fail unless missing dependencies are manually provided.
It would be relatively easy to allow the user to reject the proposal and
continue seeing other incomplete solutions (as, e.g., `aptitude` does) until
one of them is selected.
* Allow pinning to unavailable versions
The user may want for some reason to specify versions that are not in the
index, for work-in-progress releases or when switching between several indexes.
Instead of blocking him entirely, the incomplete solution is displayed and he
can accept it regardless. Forcing is required when not interactive.
* Allow update to complete with incomplete solution
When the solution is already incomplete we emit a warning to remind the user
about this, but we need not to err, since there are no changes to the solution,
or we might find a less incomplete one.
Also added a test for the behavior when trying to update a pinned version
* Allow withing dependencies with incomplete solution
This is the last of the commands that previously erred out with "Cannot solve
dependencies". Now, it can be forced into accepting any dependency as long as
the user is OK with having an incomplete solution.
* Remove deprecated Alire.Solutions.Valid
Instead, .Is_Complete or .Composition should be used for better granularity.
Is_Complete is more stringent than before (hints make the solution incomplete),
but the new flexibility to work with incomplete solutions makes the difference
secondary; the user is less restricted than before.
* Minor fixes to tests for Is_Complete change
By making solutions with any external (including hints) incomplete, it is
necessary to force a few commands in the tests that before succeeded normally.
Some tests that checked for exact text were now failing due to the extra
information/interaction caused by incomplete solutions.
The stderr warning on incomplete solutions in setenv also requires fixing its
output.