Use preview coords instead of full to add markup

Before, if in frontend mode with a resizeRatio, the client would be
responsible for converting preview coordinates to full coordinates. This is
smarter to do on the Builder's side, since it already has this information.
Add image offsets to provided coords
Add some docs and return shape ref on manual add

Add documentation to many functions. Have addCircle and addRectangle
return a reference to the tracked shape to the client.

Add the following undocumented terms to the project:
* Tracked Objects
* Schema: ShapeData
* Schema: Builder JSON

TODO: Document the above undocumented terms.
Add schemas for ShapeData objects
Add visual testing method

This test script requires three files in the test directory:
* file.source.jpg: the original image to crop or add markup to
* file.node.oracle.jpg: the expected output file from node-markup
* file.markup: the markup instructions for node to use
Add test image output to gitignore
Add automated 'gm compare' invocation
Add automated compare value checking
Fix error reporting of absolute value
Merge branch 'functional-tests'
Stop passing redundant canvas references

The Builder object already has a reference to the fabric canvas,
so passing that same fabric canvas around to different functions is
unnecessary and potentially confusing to the reader. Remove that
redundant parameter from functions that use it.
Use rectangle in dell test image
Stop passing redundant canvas references

The Builder object already has a reference to the fabric canvas,
so passing that same fabric canvas around to different functions is
unnecessary and potentially confusing to the reader. Remove that
redundant parameter from functions that use it.
Remove test image if the test passes

The test image is only really useful if the comparison test fails.
Delete the file if the test passed.
Absorb json reference instead of passing it around

Put the JSON object reference passed in from processJSON into its own
variable on the inside and use that instead of passing it around to each
function.

Also do some array member reference cleanup to improve code readability.
Remove callback parameter in getMarkupObjects
Add several small test images with markup
Add repro reporting in comparison failure

Add a command string so the user can repro an image comparison
failure manually.
Add type attribute to ShapeData schemas

ShapeData.type is used by addShape() to determine what type of shape
to add. It is ignored in addCircle and addRectangle, but these will
be deprecated. Add that required attribute to the schema.
Merge branch 'proceduralize-builder' of github.com:iFixit/node-markup into proceduralize-builder

Conflicts:
	ImageMarkupBuilder.js