Addressing github comments

Most of the anonymous functions from the legend drawing have been moved
out to private variables, to avoid creating them each time we draw. The
one exception is the text width function, as this required the ctx var,
which we can't get at from a private variable otherwise.

Also moved the view logic for the legend into a legend.init() method,
and defaulted the chart to not having a legend, unless the chart.legend()
method is called.