### Summary

I'm trying to optimise my builds by avoiding unnecessary downloads.
ansible-galaxy install always downloads the latest version even if the existing collection already meets the requirements. This behaviour appears to be consistent with the documentation (https://docs.ansible.com/ansible/latest/galaxy/user_guide.html#installing-an-older-version-of-a-collection), but why has it been implemented to always download ?


e.g. I have
```
# /usr/local/lib/python3.8/site-packages/ansible_collections
Collection                    Version
----------------------------- -------
amazon.aws                    3.5.0  
...
```
and requirements.yml
```
---
collections:
  - name: amazon.aws
    version: '>=1.5.0'
```
if I run ansible-galaxy install -r requirements.yml I get amazon.aws 6.1.0 installed, even though 3.5.0 already meets my 1.5.0 requirement. I would expect nothing to happen because my requirements were already met.

### Issue Type

Feature Idea

### Component Name

ansible galaxy

### Additional Information

People who like the existing behaviour could perhaps use the recently added --upgrade switch to continue to get the upgrade to the lastest version.

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
([], '1', [], True),
        ([], '+1', [], False),
        (["good_signature"], '2', [], False),
        (["good_signature", collection.gpg.GpgBadArmor(status='failed')], '2', [], False),
        # This is expected to fail because ignored does not increment successful signatures.
        # 2 signatures are required, but only 1 is successful.
        (["good_signature", collection.gpg.GpgBadArmor(status='failed')], '2', ["BADARMOR"], False),
        (["good_signature", "good_signature"], '2', [], True),
    ]
)
def test_verify_file_signatures(signatures, required_successful_count, ignore_errors, expected_success):
    # type: (List[bool], int, bool, bool) -> None
    def gpg_error_generator(results):
        for result in results:
            .GpgBaseError):
                yield result
    fqcn = 'ns.coll'
    manifest_file = 'MANIFEST.json'
    keyring = '~/.ansible/pubring.kbx'
    with patch.object(collection, 'run_gpg_verify', MagicMock(return_value=("somestdout", 0,))):
        with patch.object(collection, 'parse_gpg_errors', MagicMock(return_value=gpg_error_generator(signatures))):
            assert collection.verify_file_signatures(
                fqcn,
                manifest_file,
                signatures,
                keyring,
                required_successful_count,
                ignore_errors
            ) == expected_success