Use Handle for passing foreign objects to Rust
Consolidated the various handle maps into a single implementation for
each language. This handle map works basically the same as all the
others, but it's API is based on the `HandleAlloc` trait. Handles have
a couple properties:
* All foreign handles are odd, which allows us to distinguish between
Rust and foreign handles.
* For handles store a map ID that can detect when a handle is used with
the wrong map.
Made all languages always use the handle maps for passing objects. No
more trying to leak pointers from to foreign objects.
Started updating the ForeignExecutor code to use handles, but this is
still a WIP while the ForeignExecutor type is in it's limbo state.