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.
If states is a set of current states it means that state management is a bit awkward as state management/workflow of New to Completed would be something like entry.removeState(oldState).addState(newState).  Also states could overlap (two things might want to have something called Favorite).  Instead of a Set<State> should it be Map<StringStateType,State> so workflow can be represented by entry.setState(stateType,newState) and if workflow is not needed you'd clear with entry.removeState(stateType)?