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

This is to address issue #4401