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.
Decoupling is good, but not good if through HTTP even for the same JVM. The abstraction boundary should be interface, not implementation. If the `Store` is the blocker, we need to make it right.