Updated ModelSync.Local code
Unit tests for ModelSync.Local
Updated Model docs with ModelSync.Local usage
Updated App metadata with ModelSync.Local
Update App's unit testing HTML with ModelSync.Local
Update build.json with ModelSync.Local
Improving returned errors in local syncing.
Additional test case for errors such as QUOTA_EXCEEDED_ERR
add dual listener when on a touch-enabled browser
build event-touch
Merge branch 'dev-3.x' into dual-listener
Implemented callbackOnce flag in NodeList.transtion (issue 832)
Added test for callbackOnce flag
fixed formatting in transition unit test
fixed issue with the test, it would always pass if any callbacks were fired
changed the test to increment a counter and using a delayed wait to test
changed wording in unit test fail message
updated HISTORY.md with NodeList.transition optional flag info
Merge branch 'dev-3.x' into dual-listener

Conflicts:
	build/event-touch/event-touch-coverage.js
Fixes getColumn when column is named (but no key)

Added a check for column name besides column key.
Also, added an optimization so that if there is a `host` configured (as
it is usually the case in actual usage, not testing), it can get the
value from `_columnMap` which is much faster.
Fixed an error in deep cloning column info.

The arguments to the search into the array of `known` objects were
reversed.  Cloning of objects with circular references could go forever.
Also, used the newly added `getColumn` method in `body.js` to complete
the functionality of `getColumn` so that columns can be fetched by cell
reference.
event-tap now has preventDefault(), works on Android 4.0.x and on mouse/touch enabled devices.

event-tap got a bunch of modifications in this commit:
- Dual listener support! Listens to "touchstart mousedown", and based on which one is captured, sets up listeners for either "touchmove", "touchend", "touchcancel", OR the equivalent mouse events. Now, touch events obviously fire a corresponding mouse event, and I didn't want to have a heavy-handed event.preventDefault() in the code. To prevent the corresponding mouse/click events from firing `touchEnd()`, I set up a `needToCancel` boolean that is toggled once the first `touchstart/mousedown` is captured.

- e.preventDefault() works!  You can now do this:
```
    node.on('tap', function (e) {
      e.preventDefault();
      //do some stuff here...
    });
```