Notifications System core

Following https://issues.cask.co/browse/CDAP-849 jira and design doc.
Build is running at https://builds.cask.co/browse/CDAP-DUT320-3.
Seems like any of the field can be `null` since there is no check from the builder as well as in this constructor. Is that by design? If that's the case, then the `id` will be having string `"null"`?