feat(uiStateActive): directive to add/remove classes for active state

Adds a directive to switch a set of classes in a DRY fashion by interacting
with neighboring ui-sref directives.

The class to be used is an interpolated string, which is not $observed. There is
no default, as I do not wish to tie this module to a particular CSS model or
framework. A default may be configured in the future with a provider. As usual,
multiple classes may be used, as Attributes.$addClass/$removeClass will separate
classes on whitespace.

CAVEATS:

This is only capable of working as a parent of a ui-sref directive, or as a sibling
directive on the same element. In the future, there may be a mechanism around this,
but for the time being I can't think of what it would look like.

USAGE:

Sibling directive on same element as ui-sref:
<a ui-sref="foo.bar({baz: '123'})" ui-state-active="active" href>123</a>

--- OR ---

Ancestor directive of ui-sref:
<li class="item" ui-state-active="active">
  <a ui-sref="foo.bar({baz: '123'})" title="123" href>123</a>
</li>
chore(uiStateActive): refactor & add test coverage
chore(uiStateActive): remove unneeded code

paramKeys aren't needed when using `equalForKeys()` strategy
chore(uiSrefActive): rename uiStateActive to uiSrefActive

Renamed to reflect the association with the ui-sref directive.
Merge pull request #635 from caitp/issue-19

feat(uiStateActive): directive to add/remove classes for active state