Adding a new operator for an objective which involves gradients

Interesting to see how does it work with Normalizing Flows here: https://github.com/pymc-devs/pymc3/blob/master/docs/source/notebooks/normalizing_flows_overview.ipynb