Let's solve #729, Curved Text.

This pull request adds the basic ability to fabric.Text-like's to observe a fabric.Path. It includes a variety of options to control that relationship, such as observing rotation, simple collision detection, and a controllable distance offset along the path. It reimplements both JSON and SVG exporting features. It reimplements the JSON importing feature. It contains several minor bugfixes to existing fabricjs code. It provides detailed commentary of the algorithms related to the text-on-path feature for future development.
Note: the frozen feature is meant to help support fabric.IText's constant requirement to redraw itself for the caret, but I have chosen not to include the code to actually integrate that feature. Freezing an object just prevents the boundaries (which contain all the necessary calculations) from being reset, and can be accomplished by setting fabric.Text#isFrozen to true (or unaccomplished by setting it to false). Basically, don't do calculations if the state hasn't changed. The reason I have not included this feature is that I assume there is a better tie in than fabric.IText (i.e. something on state change that can watch path state change), but I did not bother to look.