### 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
collection_path, collection_tar = collection_artifact
    temp_path = os.path.split(collection_tar)[0]
    shutil.rmtree(collection_path)
    mock_display = MagicMock()
    monkeypatch.setattr(Display, 'display', mock_display)
    concrete_artifact_cm = collection.concrete_artifact_manager.ConcreteArtifactsManager(temp_path, validate_certs=False)
    requirements = [Requirement('ansible_namespace.collection', '0.1.0', to_text(collection_tar), 'file', None)]
    collection.install_collections(requirements, to_text(temp_path), [], False, False, False, False, False, False, concrete_artifact_cm, True, False)
    assert os.path.isdir(collection_path)
    actual_files = os.listdir(collection_path)
    actual_files.sort()
    assert actual_files == [b'FILES.json', b'MANIFEST.json', b'README.md', b'docs', b'playbooks', b'plugins', b'roles',
                            b'runme.sh']
    with open(os.path.join(collection_path, b'MANIFEST.json'), 'rb') as manifest_obj:
        actual_manifest = json.loads(to_text(manifest_obj.read()))
    assert actual_manifest['collection_info']['namespace'] == 'ansible_namespace'
    assert actual_manifest['collection_info']['name'] == 'collection'
    assert actual_manifest['collection_info']['version'] == '0.1.0'
    assert actual_manifest['collection_info']['dependencies'] == {'ansible_namespace.collection': '>=0.0.1'}
    # Filter out the progress cursor display calls.
    display_msgs = [m[1][0] for m in mock_display.mock_calls if 'newline' not in m[2] and len(m[1]) == 1]
    assert len(display_msgs) == 4
    assert display_msgs[0] == "Process install dependency map"
    assert display_msgs[1] == "Starting collection install process"
    assert display_msgs[2] == "Installing 'ansible_namespace.collection:0.1.0' to '%s'" % to_text(collection_path)
    assert display_msgs[3] == "ansible_namespace.collection:0.1.0 was installed successfully"
@pytest.mark.parametrize('collection_artifact', [