Add support for the lineDash API.

Described here:
http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash

The test images match on Chrome, but not on Firefox. It looks like
Firefox resets the lineDash to [] when given invalid parameters. My
reading of the spec agrees with Chrome.

-David
Hi, just pulled the the last tag and those defines lines breaks my build with node-gyp, if i comment them everything is back to normal.

(under mac osx 10.9.4, node-canvas 1.1.5)

```
../src/CanvasRenderingContext2d.cc:2049:21: error: use of undeclared identifier '_isnan'; did you mean 'isnan'?
    if (a[i] < 0 || isnan(a[i]) || isinf(a[i])) NanReturnUndefined();
                    ^
../src/CanvasRenderingContext2d.cc:29:18: note: expanded from macro 'isnan'
#define isnan(x) _isnan(x)
                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cmath:425:1: note: 'isnan' declared here
isnan(_A1 __x) _NOEXCEPT
^
../src/CanvasRenderingContext2d.cc:2049:36: error: use of undeclared identifier '_finite'; did you mean 'finite'?
    if (a[i] < 0 || isnan(a[i]) || isinf(a[i])) NanReturnUndefined();
                                   ^
../src/CanvasRenderingContext2d.cc:30:20: note: expanded from macro 'isinf'
#define isinf(x) (!_finite(x))
                   ^
/usr/include/math.h:718:12: note: 'finite' declared here
extern int finite(double) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
           ^
../src/CanvasRenderingContext2d.cc:2088:7: error: use of undeclared identifier '_isnan'; did you mean 'isnan'?
  if (isnan(offset) || isinf(offset)) return;
      ^
../src/CanvasRenderingContext2d.cc:29:18: note: expanded from macro 'isnan'
#define isnan(x) _isnan(x)
                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cmath:425:1: note: 'isnan' declared here
isnan(_A1 __x) _NOEXCEPT
^
../src/CanvasRenderingContext2d.cc:2088:24: error: use of undeclared identifier '_finite'; did you mean 'finite'?
  if (isnan(offset) || isinf(offset)) return;
                       ^
../src/CanvasRenderingContext2d.cc:30:20: note: expanded from macro 'isinf'
#define isinf(x) (!_finite(x))
                   ^
/usr/include/math.h:718:12: note: 'finite' declared here
extern int finite(double) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
```