fix(ngShowHide): stop ngShow and ngHide applying animations incorrectly

Fix ngShow and ngHide so they don't animate in/out their classes every time the watch expression is evaluated.  These directives now only change when the watch expression's boolean value actually changes.

Closes #4401