Bind/unbind is now synchronous.

*There are now no micro tasks involved in the bind/unbind process. It
is synchronous.
*The behavior for O.o and SetterObserver is now identical with respect
to sequence of events during binding and timing of change notifications.
*If a directive has a bind callback, then it is called after all its
properties are set (either by bindings or explicit values). Its
property change callbacks are not called. If the directive does not
have a bind callback, then each property change callback is invoked
immediately after setting the value.
*Simplification of the repeat directive.
*Introduced DirectiveInstance to manage bind/unbind.