Internet Explorer 8 support

It also improves the API so that custom message event's handlers don't have to decode or propagate events.