Early stopping does not work with structured result returned in training_epoch_end
🐛 Bug
Situation: A structured result is returned in training_epoch_end and early_stop_on was set.
Illustrative example:
    def training_epoch_end(self, outputs):
        avg_loss = outputs['minimize'].mean().squeeze()
        result = pl.TrainResult(early_stop_on=avg_loss)
        return result

Expected Behaviour: early stopping will be triggered
Actual Behaviour: it is not triggered
To Reproduce
Run the code sample below.
Code sample
Try running my example: https://gist.github.com/Lucas-Steinmann/f900b3ef5636028d5917d4cb0183a291
Expected behavior
Should early stop after about 20 epochs, since metric given to early_stop_on is artificially increased.
Environment

CUDA:
- GPU:
- GeForce GTX 1080 Ti
- available:         True
- version:           10.1
Packages:
- numpy:             1.19.1
- pyTorch_debug:     False
- pyTorch_version:   1.6.0
- pytorch-lightning: 0.9.1rc1
- tensorboard:       2.2.0
- tqdm:              4.48.2
System:
- OS:                Linux
- architecture:
- 64bit
- ELF
- processor:         x86_64
- python:            3.8.3
- version:           #116~16.04.1-Ubuntu SMP Wed Aug 26 17:36:48 UTC 2020

Additional context
First discussed here: #3193 (comment)