A Textbox with text wrapping and box resizing (subclasses IText)

For [Issue 187](https://github.com/kangax/fabric.js/issues/187). This is a more fully featured implementation than [Pull Request 725](https://github.com/kangax/fabric.js/pull/725). 

I need this feature for my product, so I fully intend to support this class if it is made official.

### Demo
Check it out [a demo](http://jsfiddle.net/jafferhaider/51u08n39/9/).

### Summary of features
- Subclasses IText, so gets all of its goodness.
- Text wraps as user types and/or resizes a Textbox. Works with all textAlign values.
- User can change width of Textbox. Height is automatically set based on text wrapping. Font size and scale does not change.
- Support for resizing in Groups. Only the width of a Textbox changes. The Textbox updates its scaleX/Y values to undo scale values of its parent Group so that font size remains the same.
- Refactored the ton of `this.text.split(this._reNewline)` calls into a function that gets overwritten by subclasses.
- Fixed bug in Justify text (was present in both Text and IText classes).
- Caches text wrapping info for fast performance.
- Tested on latest versions of Safari (OSX & iOS), Chrome (OSX & Win), Firefox and Internet Explorer.

### Open issues / TODOs
~~1. Inheritance bug in IText.toSVG(). The `callSuper` in `_setSVGTextLineText` goes into a recursive loop if called on a Textbox object. It works fine if I replace the `callSuper` call with a call to a copy of `Text._setSVGTextLineText`. Have you encountered something like this before? Any opinions on how to fix this?~~

Please list changes that you'd like me to make before this can be made official. I saw in the other pull request that @kangax wasn't too sure about the 'Textbox' name ... we can change it.
In the interest of performance I won't make this change. None of the other object classes in Fabric do this either. Please ensure that your code always sends the correct type to Fabric.