Added BM.prototype._currentPlayerState(), replaced related parts to use this function.
Introducing WebScriptObject+ConvertInContext. This category contains convertInContext: method to convert WebScriptObject into NSArray or NSDictionary if possible.
Currently if `self` has at least one function as a property, a method, conversion won't happen in order to utilize callWebScriptMethod:withArguments:.
Introducing BMJSFunctionProxy. This is an internal class, not meant to be used directly. The class method scriptObjectWithBlock:inWebFrame: wraps BMJSFunctionBlock into WebScriptObject, and from JavaScript side it behaves as a function.
Changed BMJSBridge callMethod:withArguments: to accept BMJSFunctionBlock(NSBlock) as an argument.
Changed BMJSBridge to return NSArray, NSDictionary if possible.
Added BM.prototype.listenForCurrentTrack which periodically loops to check if the current playing track is new one and calls back with the track object.
Added BMNotificationCapability to evaluate if the user's OS is capable of certain APIs. This commit eliminates track notification feature.
Added deliverNotificationWithTitle:subtitle:image:
Along with listenForTokens, listenForCurrentTrack is also triggered as soon as window object gets cleared.