feat($compile): allow $watchCollection to be used in bi-directional bindings

Allow an asterisk to be specified in the binding definition to use `$watchCollection` instead of `$watch`.
```js
scope: {
  prop: '=*'
}
```

This is a follow-up to #3491 but using `$watchCollection` as @IgorMinar [suggested](https://github.com/angular/angular.js/pull/3491#issuecomment-22274279).
... and when the match is optional, it would be `=?*` that is very odd as it should be `=*?`