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))
```