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.
Shadows are currently represented in SVG from fabric as a copy of the sometimes individual tspan elements. Unfortunately, that means that, in practice, strokes show up in the shadow (which are inner-strokes in fabric). While it's a cool effect, this method seeks to address that by looking for an arbitrary shadow definition on the style in order to push flat shadows. Additionally, non-Firefox SVG parsers treated this method of shadowing (i.e. what's already in fabric) as additional text along the path (rather than being behind). So, it's foundational work for someone to come afterward, fixing it so that the shadow would be a separate object beneath the text element (if you want to support implementations like Inkscape in addition to Firefox); however, changing that has implications on the import from SVG feature, so I have avoided actually doing that (note: I did not change the import from SVG feature).