Notification infrastructure



<!---
@huboard:{"order":236.25,"milestone_order":336,"custom_state":""}
-->

It's probably not too late for me to break this API, so I'mma do it.