Update Axes3D.tricontour for custom triangulations

An example has also been added to illustrate the additional flexibility possible with providing a user-defined triangulation.

There has been a snag. There is no neat way, if the user specifies a non-default `zdir`, to triangulate in the correct coordinate plane. This solution basically re-triangulates the points in the correct plane if a `zdir` other than `z` is provided.

I __don't__ like this solution. The alternative would be to add a convenience method to `matplotlib.Triangulate` to return the `x, y, z` data coordinates without computing a, possibly wasted, triangulation. This, however, is 3d specific. No axes-juggling happens in 2d so they don't need to be rotated.

I thought I would stop here with this solution before continuing onto `Axes3D.tricontourf`

__Note: This pull request is not complete, it requires feedback before it can be finished.__