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.
Not symmetric to the decode method, which takes a `ByteBuffer`. Also, this method should take a `Type`, which represents the type of the `notification`.