Allow overriding optimizer_zero_grad and/or optimizer_step when using accumulate_grad_batches
🚀 Feature
Currently, PyTorch Lightning refuses to allow custom optimizer_step and optimizer_zero_grad functions when using accumulated gradients, saying:
When overriding `LightningModule` optimizer_step or optimizer_zero_grad, `accumulate_grad_batches` in `Trainer` should be 1. It ensures optimizer_step or optimizer_zero_grad are called on every batch.

It doesn't seem like there's any reason to avoid allowing custom gradient steps/optimizer reset behaviors with the automated accumulated_grad_batches? Perhaps I'm not as familiar with the underlying procedure, however, and there's something technical blocking this functionality.
Motivation
Currently, I would like to make modifications to an optimizer every time zero_grad is called. The perfect time to do that would be in an overriden zero_grad method, however that prevents the use of gradient accumulation.
Pitch
Remove the check at lines 80-86 in the configuration_validator.py (Or change it to a warning, instead of an error). I can submit a PR for this, if reasonable.
Alternatives
We can solve this problem by writing custom optimizers, or by keeping track of the number of iterations of gradient accumulation in the standard steps, however this seems like it runs contrary to the point of using pytorch lightning's APIs.