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.
Does entry.getStates() return a historic list of states or all current state values?  If it is a historic list of states (with their date/time of the state transition) this would not work.  You don't care if the entry was ever favorited, just that it is favorited now.