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.
This is dangerous--if the meshdata was created with face-indexed vertices, then this forces it to compute non-indexed vertices which is quite expensive. Better:
```
if self.mesh_data.has_unindexed_data():  # this methods needs to be added
    data = self.mesh_data.get_vertices()
elif self.mesh_data.has_face_indexed_data():
    data = self.mesh_data.get_vertices(indexed='faces')
elif self.mesh_data.has_edge_indexed_data():
    data = self.mesh_data.get_vertices(indexed='edges')
else:
    # die?
```
This is such a common thing to do with `MeshData` that I wonder if it makes sense to just set its "output mode", and then all requests to vertices / colors / normals will automatically use the selected indexing mode. For example:
```
mdata.index_mode = 'faces'
verts = mdata.vertices
faces = mdata.faces
``` 
(but that should probably be left for a different PR)