rough first pass at JS vm compiler
optimize functions calls where we know the absolute address
optimize binary operations that load / store from and to the same location
don't perform unneccessary casts when we can load directly from HEAPF32
apply constant offsets at build time