Notifications API

Added notifications API over websockets. User gets an instance of `ChainNotificationObserver` using which it can connect/reconnect/disconnect and collect events.

Currently named according to the rest of the APIs: `Notification` contains configuration for kinds of events to collect, `NotificationResult` contains data for each event.

However, in various Apple frameworks, the word `notification` usually means a particular event, not a type of events. Examples: `NSNotification`, `UILocalNotification`, `NSUserNotification`. 

To be more consistent we could call our notifications `NotificationConfiguration` and `Notification`. In fact, we do not even need to expose configuration as an object, it's enough to have `Chain` object to have factory methods for different kinds of notifications with appropriate parameters (address or transaction where needed).


It's a standard practice when the property is defined as NSString*, but should only certain values defined elsewhere. For instance, this comment appears in a documentation popover on option-click at the call site, where you cannot see all the relevant constants.

Alternative would be to use a typedef for enum, but then we'd need to convert integers to strings and vice versa adding unnecessary complexity.