2 draw optimization -- pre-parse colors, short-circuit path construction code

Profiling has revealed two small but noticeable hits in drawing performance.  These are addressed by this PR.  Each commit represents about a 4% improvement at draw-time and they add to 8%.  I'm not sure if this passes tests so this is a travis-ci probe as well as a request for comment.

My timings were done like so:
```
from __future__ import print_function
import timeit
import numpy
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure

POINTS = 500

figure = Figure(figsize=(6, 6), dpi=72, facecolor=(1, 1, 1), edgecolor=(0, 0, 0))
ax = figure.add_subplot(1, 1, 1)

scat = ax.scatter(numpy.arange(POINTS), numpy.sin(numpy.arange(POINTS)))

canvas = FigureCanvas(figure)

print(timeit.timeit('canvas.print_to_buffer()', setup='from __main__ import canvas', number=100))
```
I would advise writing a lot of unit tests.

Thinking about this on the train this morning what I suspect happened (and it might be worth doing some code forensics to check) is that originally mpl only did RGB and the alpha was added by setting RGB -> RGB * A rather than carrying around RGBA values (I have read a bit of the math behind how alpha blending works, but have not internalized it yet, but both schemes give the same result, but are more/less annoying to work with is different cases, or something...).  So the naming `_rgb` is a hold over from that, as is `_orig_color`, which you need if you are doing `self._rgb = self._rgb * alpha`.