Training and evaluating adversarial networks: from kernel discrepancies to applications