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.
JSON serialization in the Notification portlet is two-way:  the code needs to be able to re-constitute live notification objects from JSON form.  That doesn't work unless we provide a custom JsonDeserializer for custom abstract classes.

In the JsonDeserializer we write, we have a choice about how we identify the concrete class to instantiate.  We could implement some kind of registry... but to me it sounds like a headache to maintain.