gh-838

This PR addresses the 'Attempted to remove a dependant that was no longer registered' errors. Mea culpa, predictably enough - one of the recent changes was to allow dependants to register themselves against multiple keypaths (i.e. evaluators and computed properties with multiple dependencies - previously, they would create 'satellite' dependants), but the viewmodel still treated `dependant.registered` as either `true` or `false`.

So an evaluator that depended on two keypaths, and unregistered from one of them, would cause an error when it tried to unregister from the second.

This is now fixed. It prompted a couple of other changes, e.g. in how two-way bindings come to be notified that their keypath has changed.

@martypdx I want to run a couple of the changes past you before merging, since I think some of the code affected was yours originally - will comment on the relevant lines
@martypdx This stuff was causing errors once I'd removed the `dependant.registered` stuff - the issue stemmed from the fact that you can arrive at this method as a *result* of a rebinding, but this would then *cause* a rebinding.

So it's now a one-way street - no rebinding starts here, but a rebinding can cause a mustache to re-resolve (obviously).

The problem these lines were addressing is now being tackled elsewhere - two-way bindings are referenced by their individual mustaches, which call `binding.rebound()` after they re-resolve.

Does this all look like it makes sense?