WebIDL bindings.

**We can't merge this until emscripten 1.23.0, as this depends on a lot of new features in the IDL binder.**

Closes https://github.com/kripken/box2d.js/issues/56, https://github.com/kripken/box2d.js/issues/47, and likely a lot of others.

Removes the need for `customizeVTable`, but sadly breaks any existing code that uses it. That's progress.

After this gets merged, it should be very easy to upgrade to the latest Box2D version.

Still TODO: Bindings for array attributes. See: https://github.com/kripken/emscripten/pull/2686
You can't implement two identically-named functions that are overloaded by argument type only in JS. What would you write?:

    jsImpl.SayGoodbye = function(joint) { ... }
    jsImpl.??? = function(fixture) { ... }