Implementing the rest of the Notifications API

Implementing the rest of the notifications API as stated in #326. 
There's a coding convention here we're enforcing via the test quite - methods with different overloads should be in the same order for the observable interface as they are for the task-based interface. 

If you move this below the `MarkAsReadForRepository(string owner, string name)` method this will now pass.