The structure layout was incorrectly computed because of the reference, meaning
that the data located after the reference was incorrect. In particular, it
means the minimal memory size wasn't correctly read. This works around it by
using a pointer, and rename a few function parameters to make their role
clearer.

This introduces features in the jsrust crate, so we can enable/disable
compilation for a specific platform at compile-time. It also does only select
the architecture targeted by the JIT, which should result in slightly lower
compilation times on every platform, and lower binary sizes too.

Attachment #9048588 -
Attachment description: Bug 1532689: Use a ModuleEnvironment pointer (instead of a reference) to work around a bindgen bug; r?sunfish → Bug 1532689: Use a ModuleEnvironment pointer (instead of a reference) to work around a bindgen bug; r=sunfish

Attachment #9048805 -
Attachment description: Bug 1532689: Use Cranelift features to include only architecture-specific support; r?froydnj → Bug 1532689: Use Cranelift features to include only architecture-specific support; r=froydnj