Fix examples for watch function `this` change
Nested properties are presented nicely when exposed outside of Consistent, and the same nicely presented nested properties are supported as input to Consistent

Specifically, we change "todos.1" to "todos[1]"
Watchers: expand nested keys for notifying changes, so a watcher can bind to "todos" to be notified of changes inside the todos property object.

Also had to change the watcher to use a snapshot of the scope for clean checking, as in the case of nested / child scopes the return value from scope.$.get contains a $ which the clean value inputs do not.
README: try changing use of the word "key" to "property"
Rename snapshotModelSpec to snapshotSpec, as model is no longer a thing
Better handling of snapshots where a scope contains child scopes

Previously we didn't treat nested scopes as scopes, and executed any functions they contained in our own scope, which basically produces strange results.
Now that Consistent's internal merge function doesn't skip $ properties, we must prevent $ from being clobbered in a merge
JSHint suggestions
Snapshot from a child scope to a parent that contains child scopes now exclude those child scopes.

This is so that a repeated block scope's snapshot doesn't contain the array from its parent that contains itself. There isn't a nice way for that to happen, and it's undesirable.
Update Consistent's internal merge() docs due to behaviour change with $
Test that when a parent snapshot includes child scopes that value functions are called with the original child scope, not a copy
Snapshots of parents containing child scopes can now include inherited properties and value function results, due to the new pruning of snapshots of child scopes from parent scopes when being snapshotted from a child
v0.12.1
Build
Fix repeat-table.html example: bug around change of "this" in value functions
Merge branch 'refs/heads/develop'