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
This is weird, if the `all-or-nothing` property is checked when performing attribute scanning, then I would expect that this to works too for other directives that have a binding using `'@'`