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.
Required by text-on-path for non-left alignments, since the widest lines are what determine other things. Not intelligent enough to implement the alignments exactly over the less overlap feature, but they're right outside of that feature.