Add Module-level Adapters, Save-Restore and tests
# What does this PR do ?

Adds significant functionality to adapters, allowing multiple module-specific adapters, save and restore of just the adapters themselves rather than the full model (saving several hundred megabytes-to-gigabytes), and a suite of tests for the new functionality.

**Collection**: [Core, ASR]

# Changelog 
- Adds support for both "global" and "module" specific adapters. Module specific adapters allow for targetted adapters to certain modules, independent of the others.
- Adds support for saving and restoring just the adapter modules, independent of the original model weights. This allows savings of significant disk storage, since just the adapters are usually a tiny fraction of the param count of the models.
- Adds a battery of tests for the new capabilities.
- Add support for dropout to adapter modules
- Add support for stochastic dropout to all adapters via ResidualAddStrategy.

# Usage

Subclass implementations can chose between global adapters, module adapters or both. A basic implementation of Adapters for a toy model is provided in the `tests/core/mixins/adapters/test_adapter_model_mixin.py`

```python
# Global adapters (adds "abc" adapter to all supported modules - encoder+decoder+others1)
model.add_adapter(name="abc", cfg=cfg) 

# Module adapters 
model.add_adapter(name="decoder:abc", cfg=cfg)

# Save all of the adapters (only the adapters themselves)
model.save_adapters("adapters.pt", name=None)
OR
model.save_adapters("adapters.pt", name={global or module adapter name})

# Restore one-or-all adapters (only the adapters themselves)
new_model.load_adapters("adapters.pt", name=None)
OR
new_model.load_adapters("adapters.pt", name={exact module name from state dict}, 
                        map_location='cpu', strict=True)
```

# Before your PR is "Ready for review"
**Pre checks**:
- [x] Make sure you read and followed [Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md)
- [x] Did you write any new necessary tests?
- [x] Did you add or update any necessary documentation?
- [ ] Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
  - [ ] Reviewer: Does the PR have correct import guards for all optional libraries?
  
**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [ ] Documentation
