ENH: Add mesh viewer

Adds a `vispy.plot.mesh` plotter. I tried to simplify `MeshData` a little bit in the process.

Closes #548.

Ready for review/merge.
`Mesh` decides whether to use an index buffer based on the type of material applied to the mesh and the data originally supplied. The rules are something like:

* Normals are only computed of the material requires them.
* If the material has per-face colors or normals (flat shading), then we cannot use an index buffer, and everything must be converted to pre-indexed format. 
* If the material works in either mode, then use the format provided by the user to avoid unnecessary conversions / memory copies.

These are the central issues that prompted the design of MeshData. There are a variety of other cases that it handles, so I am a bit hesitant to tear it apart at this point (although I am only attached to the logic; I'm ok with discussing API changes).