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 probably pointless and pedantic but would it be *slightly* more performant to put the `allOrNothing` check first?