refactor($parse): don't use bind-once interceptor for non-bind-once expressions

Side-effects:
  - Logic for allOrNothing watches now lives in $intercept rather than $parse

Closes #9958
The last 200 lines of parse.js involving all the $watch logic is ugly, for sure, I'm not denying that :P