temp fix for Math float issue
ensure a + on large constants in Math_fround
make SItoF and UItoF support floats
wip to remove casts on math calls
refactor getLoad|getStore to receive an instruction
option to warn about unaligned loads and stores
Create a test directory for basic JS Codegen
Change some dyn_casts to casts.
Use more LLVM-idiomatic debug and error facilities.
Map optimizations.
Use the LLVM pass-manager infrastructure for DataLayout.
Constify more things.
Drop the SimplifyAllocas pass.

The JS backend doesn't need to worry as much about types in the way that the CPP
backend did, so all this pass is doing is saving a little stack space in rare
cases. If these stack savings are important, this should really be handled in
the optimizer proper rather than in a JSBackend-specific pass.
Disable an unnecessary optimization pass.
Use DataLayout to determine type size.

getPrimitiveSizeInBits works on integer types but not on pointer types.
This change makes the code more robust, and will help support the removal
of the pointer lowering pass.

This also requires removing const from some Type pointers. Types are
immutable, so the convention is that const is redundant.
Respect the requested signedness for pointer values.
Handle ConstantPointerNull correctly in more places.
Revamp ExpandI64.

By using a reverse-postorder traversal of the basic blocks, we can perform
this transform in a single pass. This eliminates the need for tricky
coordination between the passes.
Disable more unnecessary PNaCl passes.

There's no need to strip metadata; the JSBackend can just ignore any metadata
it doesn't care about.

There's no need to lower pointers to ints; the JSBackend can handle pointer
types now. And this means that there's no need to strip dead prototypes either.
Remove the nativization code, which is redundant with mem2reg.