[optim] implement AdafactorSchedule
Currently Adafactor doesn't use an external scheduler and doesn't expose its lr values, and especially as reported in https://github.com/huggingface/transformers/issues/11612 the Trainer can't work without a scheduler, so this PR:
- implements `AdafactorSchedule` which is a proxy to `Adafactor` and can pull the lr values out of it
- adds a basic test
- updates docs

The implementation is somewhat hackish, but it's good enough for now.

Fixes: https://github.com/huggingface/transformers/issues/11612

@sgugger, @LysandreJik 
Correct me if I am wrong, but I see two flaws with the current solution:
1) Only the first learning rate is returned as float, the following ones are tensors of size 1 - gives error while trying to pickle the logging history,
2) Adafactor has separate learning rates for each of the network components (Linear layers, normalizations...). The current solution gives only the LR of the first component, usually the embedding matrix.
<|||||>In other words you're saying this was a half-baked solution. It is very much so. The original workaround idea was just to return a dumb number, to make things work with HF Trainer, as Adafactor wasn't designed to share its LRs with other components.

@LukasStankevicius, would you like to enhance my initial hack to fully support the features you mentioned lacking/incomplete? It surely could use some TLC.<|||||>For my own use, I modified Adafactor scheduler as follows:
```python
from transformers.optimization import AdafactorSchedule

class MyAdafactorSchedule(AdafactorSchedule):
    def get_lr(self):
        opt = self.optimizer
        if "step" in opt.state[opt.param_groups[0]["params"][0]]:
            lrs = [opt._get_lr(group, opt.state[p]).item() for group in opt.param_groups for p in group["params"]]
        else:
            lrs = []
        return [lrs]
```

Now it does not give errors while pickling logging history and reports learning rates for all components. However, it pollutes the logs (a single logged step may contain a list of over 100 learning rates).

You may average, but then, that is a point of logging lr at all?
So, I do not know the optimal solution here. Maybe just warning in documentation about Adafactor learning rates.