One channel per application and js callback functions.

It appears that MPNS opens only one channel per application and defines it by name.
Sometimes the channeluriupdate is called with delay and it looks like the channel has no Uri. Handle this by adding urichangedcallback js function.
Added js error callback to handle errors.
Added error to notify the user if they try to open new channel but already have opened one as this is throwing argument exception.
Extract the js function execution in separate method as it is reused.