tf.contrib.gan.get_joint_train_hooks

When using these train hooks, IT IS RECOMMENDED TO USE use_locking=True ON
ALL OPTIMIZERS TO AVOID RACE CONDITIONS.

The order of steps taken is:
1) Combined generator and discriminator steps
2) Generator only steps, if any remain
3) Discriminator only steps, if any remain

NOTE: Unlike get_sequential_train_hooks, this method performs updates
for the generator and discriminator simultaneously whenever possible. This
reduces the number of tf.Session calls, and can also change the training
semantics.