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.
...and check our other docstrings, I think we do `Color | ColorArray` instead of using `or`