Replace some Text arguments with ADTs

The functions `createPattern`, `lineCap`, `lineJoin`, `textAlign`, and `textBaseline` all take JavaScript strings as arguments, but there are only a finite number of words each will accept. For example, in the [`createPattern(image, repetition)`](http://msdn.microsoft.com/en-us/library/ie/ff975412%28v=vs.85%29.aspx) method, `repetition` can only be `repeat`, `repeat-x`, `repeat-y`, or `no-repeat`, so it would make more sense to represent it as `data RepeatDirection = Repeat | RepeatX | RepeatY | NoRepeat`.

These commits add corresponding ADTs for each such function and update the type signatures of the respective `Canvas` functions. Note that this is a breaking change, since the five functions will no longer accept `Text` arguments (although each ADT is an instance of `Read`, so one could just add `read` in old examples if he/she wished).