Update automatically after manual manifest edition or missing dependency detection (#472)
* Remove redundant parameter in Alire.Workspace
Environment can now be retrieved from Alire.Roots.Root.
* New Alire.Roots.Sync_Solution_And_Deps
This procedure verifies that the lockfile is not older than the manifest, and
that all dependencies in the solution exist on disk. Otherwise, dependencies
are redeployed.
* Refactor/cleanup paths from Alire.Paths
The dependency path is always used in the context of an Alire.Roots.Root, so it
is more meaningful being defined there.
Also removed the cache path that wasn't used anywhere.
* Checks against reexporting the same environment
* Refactor Alr.Commands.Requires_Full_Index into Alire
This way, the index loading can be triggered by logic in Alire that absolutely
requires the index to be loaded.
* Do not auto update before `alr update`
* Refactor Confirm_Solution_Changes into Alire
From Alr.Commands.User_Input into Alire.Utils.User_Input.
* Tests for the new sync features
- Test that a manually modified manifest results in an autosync
- Test that missing dependencies in the cache are redeployed