Comprehensive Guide to Generative Adversarial Networks and Wasserstein GANs