Alternative two-way binding implementation with versioning

***READY FOR MERGE***

As an alternative implementation discussed in github/ReactiveCocoa#163.

Brief description of how versioning is used:

- On KVO notification to A, if A.version >= B.version
  - Increment A.version
  - Send the update to B
- On KVO notification to A, if A.expectedBounces > 0
  - Decrement A.expectedBounces
  - Increment A.version
- On A modifying it's value, increment A.expectedBounces