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 this interface is more complicated than needed. Can it simply be:

```java
interface NotificationClient extends NotificationFeedManager {
  // This call the other one with "notification.getClass()" as the type
  <N> ListenableFuture<N> publish(NotificationFeed feed, N notification);
  <N> ListenableFuture<N> publish(NotificationFeed feed, N notification, Type notificationType);

  // This call the other one with a same thread executor
  <N> Cancellable subscribe(NotificationFeed feed, NotificationHandler<N> handler);
  <N> Cancellable subscribe(NotificationFeed feed, NotificationHandler<N> handler, Executor executor);
}
```