Add Set<NotificationState> to NotificationEntry to track things like New, Complete, and Favorited

https://issues.jasig.org/browse/NOTIFPLT-47

This changeset introduces the concept of states to Notification objects and refactors the FAVORITE feature to become a state.
Feels like this could be less complicated.  How about

`return ((getLabel() == null) ? 0 : getLabel().hashCode());`

figuring that Favorites without labels are all equal and where they do have labels `String`'s `hashCode()` implementation is just fine as-is?