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.
I think `ServiceWorker` has the same/similar class. Can you refactor and group them as one? If the change in `ServiceWorker` side is big, it's worth to break this PR into two, with the refactoring (maybe together with the move of `TxRunnable`) in the first one and leaving this one focus on notification system.