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.
This is a "Client" module, why need to bind the store? The right thing should be you have two guice modules, one client, one service (which you have already :+1: ). In the service module, it has a private binding for the store and an exposed binding of `NotificationFeedManager`. For the client module, you actually only needs it for distributed mode, which binds `NotificationFeedManager` to `RemoteNotificationFeedManager`.

Hence in unit-test, standalone and master, you only needs to include the service module. In the `ProgramTwillRunnable`, you only includes client module.