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.
When will it throw `IOException` and when the returned future will be failed with a failure cause? I think it's better for this method not to throw exception but always reflect the exception in the returned future.