docs(guide): add ngTagsInput to UI Widgets
docs(guide): add UI-Map to Complementary Libraries
docs(guide/index): add codeschool link
feat(attrs): trigger observers for specific ng-attributes

When an observer is set to listen on the pattern, minlength or maxlength attributes
via $attrs then the observer will also listen on the ngPattern, ngMinlength and the
ngMaxlength attributes as well.

Closes #7758
docs(error/$sce/unsafe): suggest including ngSanatize
feat(ngInclude): emit $includeContentError when HTTP request fails

This adds a scope event notification when a template fails to load.

This can have performance implications, and unfortunately cannot at this moment
be terminated with preventDefault(). But it's nice to be notified when problems
occur!

Closes #5803
docs(tutorial/step_09): note about 'Filter' suffix

Reminder that 'Filter' is appended to filter names when injected.
Link to Filter guide where this is mentioned.
docs(directive/input): document ngTrim for textarea
docs(error/$compile/tplrt): note that html comments can cause this
docs(api/index): add Oxford comma

Verified grammar at https://owl.english.purdue.edu/owl/resource/607/01/
docs($animate): $animate.enabled's param is optional

The docs show that param 'element' (of type DOMElement) is required when it is optional.
docs(tutorial/step_09): fix link to filter guide
docs(tutorial/step_09): fix formatting
chore(jshint): dedupe jshint option
fix($compile): always error if two directives add isolate-scope and new-scope

Previously, the compiler would throw an error if a directive requested new non-isolate scope
after a directive had requested isolate scope. But it would not error if a directive
requested an isolate scope after a directive had requested a new non-isolate scope.

Since it is invalid to have more than one directive request any kind of scope if one of
them has requested isolate scope, then the compiler should error whatever order the
directives are applied.

This fix addresses this situation by throwing error regardless of order of directives.

BREAKING CHANGE:

Requesting isolate scope and any other scope on a single element is an error.
Before this change, the compiler let two directives request a child scope
and an isolate scope if the compiler applied them in the order of non-isolate
scope directive followed by isolate scope directive.

Now the compiler will error regardless of the order.

If you find that your code is now throwing a `$compile:multidir` error,
check that you do not have directives on the same element that are trying
to request both an isolate and a non-isolate scope and fix your code.

Closes #4402
Closes #4421
docs(loader): improve explanation of modules
docs(guide/services): fix link to wikipedia article containing parentheses

Fix in a mis-parsed link with ')' symbol in it

Closess #7775
feat(input): add $touched and $untouched states

Sets the ngModel controller property $touched to True and $untouched to False whenever a 'blur' event is triggered over a control with the ngModel directive.
Also adds the $setTouched and $setUntouched methods to the NgModelController.

References #583
docs(errors/$compile/nonassing): fix reversed attribute and scope property names
docs(guide/services): fix link to services api

Closes #7795