Modified TF train_step
First attempt at modifying TF `train_step()` to neatly support passthrough from the model loss head.

This has the potential to break _absolutely everything_ Tensorflow in our entire codebase and it's very untested right now, so don't even _think_ about merging it until I've done some exhaustive testing.