loader.core: Make check_snapshot ensure snapshot object references exist
When asserting the snapshot is the one expected, this now check the references targeted by the snapshot do exist.
This also checks that the alias present in the snapshot actually target branches in the snapshot.
For now, those check concern only release and revision objects (not yet up to directories and contents).
The function still allows some branches to not be resolvable. Like for example the "evaluation" branch in the case of the nixguix loader.
Related to T2483
Depends on !395 (closed)
Test Plan
tox
Migrated from D3478 (view on Phabricator)