Use HEAPU8 for SIMD load and store

Change from HEAP8 to HEAPU8, as that is what Odin's validator is
currently requiring.
Enable asm.js validation for SIMD

Not everything is working yet, but we're now at the point where it's
more useful to enable validation than to disable it by default.
Start a JS backend cost model

Implement the TargetTransformInfo interface with JSTargetTransformInfo,
which gives costs used by the optimizer. The implementation is currently
fairly minimal.
Optimize splat constants.
Make memory initializer allocation aware of whether running in a pthread.
Implement volatile loads and stores to use Atomics.load and store to guarantee that SpiderMonkey will not optimize those instructions out when executing, and to offer x86-like strong memory consistency across code that uses such constructs.
Add support for LLVM atomics.
Implement Atomic compare-and-exchange support.
Implement Atomic fence support