Renamed the 'canvas' variable to 'surface'.

Renaming the variable gives us room to create a new class called Canvas.
Abstract-out canvas creation into an object.

Moved canvas creation and size management into a new Canvas class.

This is the first step towards a more object-oriented architecture.
Since we create multiple canvases, and have to maintain several
module-global variables to track their properties, they are the ideal
place to start.

This commit also removes sizing code that was duplicated between
makeCanvas and resizeCanvas.
Added a basic frame for the canvas-drawing plugin.
Added methods to draw and measure text.

These methods provide a common way to draw HTML text above a canvas.

The getTextInfo method generates div HTML for text with a given font
style/class and angle, measures the element's dimensions, and saves
everything in a cache.  The drawText method takes the resulting entry,
finishes generating the inline styles necessary to position the div, and
adds the result to a buffer.  The render method dumps the buffer into an
overlay and expires unused cache entries.
Provide a way for plugins to override classes.
Moved canvas tick rendering into a plugin.

The base implementation uses the new drawText and getTextInfo methods to
draw text in HTML.  Canvas rendering has been moved to overrides of
these methods within the canvas-render plugin.
Adding a fix for the inability to set the point line width to 0. It's a bit of a hack, but it seems like an acceptable workaround.
Fixing bug with default tickFormatter

Change-Id: If53fdb1bf9563834c58cf2b569d0e1a6a7155eb8
Merge pull request #942 from sejordan/tickformatter-bug

Fix incorrect display of NaN with the default tickFormatter.
Replace axis.font with options.font.

Instead of giving the axis its own font property, we simply look at its
options, where the font comes from in the first place.  A separate
property is unnecessary and inconsistent with the way other axis options
are handled.
Fixed missing/superfluous semicolons.
Preserve canvas elements on re-plot.

Since the Canvas .text object is jQuery-wrapped, it was not preserved as
expected when clearing the canvas of junk.  I've replaced the selection
with one based on element classes.
Move placeholder styles into .demo-placeholder.

This allows a page to have multiple placeholders, since we're no longer
tied to unique IDs.
Load timezones asynchronously.

This prevents the Chicago example from showing up blank.  The
alternative is to define a callback, but that's messier.
Updated path to the timezone example.

The location of the file changed during the recent example revamp.
Load the first AJAX series by default.

We don't want users to think the example is broken when they first load
it.
Slightly reduce placeholder and header sizes.

The smaller size ensures that the example plots remain fully visible on
more of our most common visitor screen resolutions.
Fix placeholders for examples with other content.

After shrinking the global example placeholder size, ones with
additional content within the demo area needed to be tweaked
individually, to prevent the other content from wrapping down or
extending off the side of the container.
Cleaned up processOptions and bindEvents hooks.
Moved other hooks out of the processOptions hook.

In plugins we should never add hooks conditionally; the condition should
remain within individual hooks, so the plugin can be toggled at any
time.

Ideally we should also 'inline' the hook functions, since they're used
nowhere else.  But since that would involve a lot of code changes, we'll
put it off until the broader cleanup effort scheduled for 0.9.0.