feat ($compile) optimize bi-directional bind

Uses property getter and setter to eliminate the $watch in bi-directional bind.

The getter setter approach has two advantages:
* scopes are always in sync
* reduces number of $watches

Can't think of any disadvantages.