feat($compile): optionally get controllers from ancestors only

Implement option to strengthen require '^' operator, by adding another '^'.

When a second '^' is used, the controller will only search parent nodes for the matching controller, and will throw or return null if not found, depending on whether or not the requirement is optional.

---

It might be good to simply make this strengthened behaviour the default, since given what the original docs were saying, it really is the expected behaviour.

Closes #4518
I've made the requested changes, except added a way to ask for optional before specifying the search root. I think it's a lot more code this way actually.