MarkersVisual supports unique marker colors for edges/faces passed as numpy array.

Individual markers inside the MarkersVisual can now be given a unique color for both edges and faces.  If the user uses a numpy array, this is passed to a ColorArray, otherwise it's assumed to be a simple Color as before.

@Eric89GXL reviewed a previous iteration in #633 and suggested the ColorArray.
Easier just to do:
```
edge_color = ColorArray(edge_color).rgba
if len(edge_color) == 1:
    edge_color = edge_color[0]
```
Eventually we'll want to add singleton-checking somewhere upstream of this (where a uniform can be used instead of attribute), but this should work for now.