The declared interface for WVJB expected data to be an `id`. However, the implementation assumed `NSDictionary` in a bunch of places. Furthermore, messages received from JS by ObjC were previously always forced into an `NSDictionary` but javascript did not replace null data packets with `{}`. This patch introduces consistency in all of these cases, assuming data to be `id` everywhere, and never changing the value of data.

Drop JSONKit. It's 2013!
Use dictionary literals in example app
Clean up internal representation of messages with a WVJBMessage typedef