Enable param groups for ModelPT optimizer
Adds `.setup_optimizer_param_groups` method to `ModelPT`. The `.setup_optimization` method will give optimizers `self._optimizer_param_groups` instead of `self.parameters()`.

The `.setup_optimizer_param_groups` method will by default set `self._optimizer_param_groups=self.parameters()`.

This enables NeMo models to specify custom param groups so that, for example, per layer learning rates can be used.

In particular, this enables Megatron-LM style weight decay where LayerNorm and Bias weights are not decayed.