Implementation of all-matches functionality + tests

When a user performs a 'snapshot pull', they might specify a dependency
version that matches multiple packages in the snapshot. However, the current
implementation of the 'snapshot pull' command only allows one package
to be pulled from a snapshot at a time for a given dependency.

The newly implemented all-matches flag allows users to pull all the
matching packages from a snapshot, provided that they satisfy the version
requirements indicated by the dependencies.

More unit tests have been added in order to test the new functions
added.