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.
What is this empty interface for? 

I think it can simply be an `NotificationFeedManager` interface. In standalone/in-memory, there is only one implementation (no point to communicate via HTTP in those modes). In distributed mode, there is a client side implementation that talks to a HTTP server, which is handled by the notification handler. The handler calls the same one being used in standalone mode. Then we only need to expose one interface through guice injection and they can bind to different stuff in different mode.