Removed trailing whitespace and converted leading tab to spaces.
Added support for horizontal lines, such as a y-axis or value thresholds.

`chart.options.horizontalLines` is an array of values of form:

    { color:'#ffffff', lineWidth: 1, value: 0 }

That example results in a 1px white line, indicating the y-axis. This is useful if your chart has both positive and negative values, and absolute values are important.  Before this patch, only relative values could easily be observed.

The set of lines may be dynamically updated at runtime. The example in customisation.html demonstrates this.
Added support for custom yRange callback function.

Client code can now provide custom code to calculate the min/max y-values. This provides more flexibility than a dozen confusing settings.

The demo in customisation.html has been extended to show this new behaviour in operation. The custom y-range function in this demo balances the range around y==0, and ensures there's always a minimum range visible to avoid situations where near-zero noise values from a sensor are stretched to the full visual range, exaggerating its significance when in fact it can likely be ignored.
Addressed TODO.
Removed saturation of y-value to visible range.

Before this patch, the chart could convey misinformation under some circumstances. For example, if you set maxValue to 5, and then plotted the values 1,10,1, you would view these points as 1,5,1. By saturating the y-pixel-value to always be on the chart, the viewer may be shown misinformation.

 This patch simply removes the saturation. If the min/max values are tighter than the data, you see cropping of the series.
Improved grid option defaults.

Callers can now specify a subset of the grid options object.

Before this patch callers had to specify all or none of the grid options in the SmoothieChart constructor function.

Also the default strokeStyle for grid lines was given two different default values, depending upon how you constructed SmoothieChart. This new approach means that the default values are all specified in the same, single, place.

typeof(val) === 'undefined' is used for values which may legitimately be zero.

This code would be quite a bit less verbose if using something like Underscore.js's `extend` function [1]. A similar approach that doesn't depend upon any libraries would be good.

[1] http://underscorejs.org/#extend
Customisation demo extended to show humane rounding of min/max range.

The example in customisation.html shows a way of rounding the upper/lower limits to numbers rounded in a human-friendly fashion.
Added version bump details in header.
Merge pull request #31 from drewnoakes/feature/lines

Support for horizontal lines and a min/max range callback function