Fix invalid usage of Math.floor + simplify code

First:
Math.floor(3.2) -> 3
Math.floor(3.7) -> 3
Math.floor(-3.7) -> -4
Math.floor(-3.2) -> -4

Second:
3.2|0  -> 3
-3.2|0 -> -3

So, behaviour of these approaches are DIFFERENT on negative values. So:
http://stackoverflow.com/questions/596467/how-do-i-convert-a-number-to-an-integer-in-javascript

src/analyzer.c: simplified code.
src/library.js:
* Simplify code, potentially fix bugs with negative time values in many places.
* FIX bugs in handling of negative numbers in modf(), modff() and div()

Simplify code for other functions where we need integer part of floating-point number.
Finished draft framework for bind.h
fix async assertion for asm
Optimize 'HEAP32[(46 + 2|0) >> 2' to 'HEAP32[12]'

Merge joinAdditions and "num >> num" folding into simplifyBitops, and rename
it to simplifyOps. Make the main traversal in simplifyOps use a "post"
function rather than a pre function to allow optimizations to cascade.

The result is that given an expression like 'HEAP32[(46 + 2|0) >> 2',
simplifyOps can start by folding the '46 + 2', and then work its way out
and fold in the '>> 2', and arrive at 'HEAP32[12]'.
proxy some more gl calls
Merge pull request #2684 from sunfishcode/incoming

Optimize 'HEAP32[(46 + 2|0) >> 2' to 'HEAP32[12]'
fix bindAttribLocation semantics in gl proxying - they take place not immediately, but after the next link
EXCEPTION_DEBUG additions
refactor exceptions info into JS objects
clean up exception infos
Fix FUNCTION_TABLE folding suppression.

The check that disables simplification of expressions within
FUNCTION_TABLE subscripts needs to run in the "pre" visitor, not the
"post" visitor.

Also drop a TODO which isn't important. Opportunities to convert an
indirect call into a direct one would normally be already optimized by
this point.
de-adjust pointers to run the proper destructor when virtual inheritance is involved; fixes #2682
use Module.locateFilePackage as a further way to more generally customize the remote package name in file packager; fixes #2680
Merge pull request #2675 from hamishwillee/incoming

Draft framework for bind.h
[doc] Building the libc & libcxx doesn't use make/configure.
[doc] Fix a couple of typos.
Support for array attributes in WebIDL bindings.
disable closure in non-fastcomp test_exceptions
Minor fixes the building from source and toolchain docs. Also filesystem docs.
Skip over updating already deleted OpenAL sources.