Error message for failed openURL call

This will return an error message when a call to a URL such as twitter://post?message=hello%20world fails because the appropriate app to handle the scheme is not available.
Wrapped up hpub unpackaging into a block executed on a background thread
Added JS event on URL error

The event will be dispatched when a URL cannot be opened because no external application can handle it (e.g. 'twitter://').
Example of catching the event:
window.addEventListener("urlnothandled", function(event) { alert(event.url); });

See #862.
Better error message for book.json type errors
More error handling when parsing book.json

When the JSON contains a duplicate key, JSONObjectWithData on iOS 5.1 will return nil. Unfortunately, the returned error is not very helpful, but it's at least better than the previous version of the code (which was printing the error in the wrong place).
See #904.
Merge branch 'master' of https://github.com/benoitchantre/baker