fix(ngClass): handle ngClassOdd/Even affecting the same classes

The basic approach is to introduce a new `elt.data()` called `$classCounts` that keeps track of how many times `ngClass`, `ngClassEven`, or `ngClassOdd` tries to add a given class. The class is added only when the count goes from `0` to `1`, and removed only when the count hits `0`.

In order to avoid duplicating work, I moved some of the logic for checking which classes to add/remove into this directive and make the call to `$animate` myself.

Closes #5271