feat($compile): allow any attribute to use allOrNothing interpolation

Previously, only a limited set of attributes would use allOrNothing
interpolation. It is now possible to request allOrNothing interpolation by
appending a '!' to the attribute name. This should result in attributes being
removed / not added to the node if their values are undefined, which can
prevent some kinds of errors in SVG elements.

Example:

    <circle ng-attr-r!="{{dimensions.radius}}" x!="{{position.left}}">

Closes #8376
I would go with a suffix that makes all browsers happy (with the exception of `!` as it looks like `!=` is a not equals) or with a prefix to the entire directive, this is `all-or-nothing-ng-attr-foo="..."` or `all-or-nothing-my-binding-param="..."` (where the `all-or-nothing` prefix is open to discussion)