Fix support for unaligned loads and stores

This patch reverts 42ea326b24d35a8e3036bd6e7c91ed4b522e9dd3, since broke
handling of misaligned loads and stores, and adds tests for unaligned
loads and stores.
A new API for loads and stores.

This implements the proposal at
https://github.com/johnmccutchan/ecmascript_simd/issues/78

This will give us both user-friendly float32x4 loads from Float32Array
data, and low-level low-overhead float32x4 loads at arbitrary offsets.
Fix {load,store}{X,XYZ} in wider-element arrays.

Fix the SIMD loadX, storeX, loadXYZ, and storeXYZ functions for
int32x4 and float32x4 in the case where the typed array element size is
wider than the SIMD element size. This is hopefully a very uncommon
case.
Fix typo.
Use instanceof instead of toString()

bbouvier noticed that instanceof is much faster than toString() for this
use case!
Handle typed array offsets.

Fix loadX and storeX handling of typed arrays with non-zero byteOffset
fields.
Add "ByScalar" to shift operations

Rename the shift operations to include "ByScalar" to clarify that their
shift count is a scalar value, and to make namespace room for adding
vector-vector shifts in the future.
Testcases for shifts.

Add tests for shiftLeftByScalar, shiftRightArithmeticByScalar, and
shiftRightLogicalByScalar.
Remove zero() from the polyfill / spec.
Remove scale from the polyfill / spec.
Remove withFlag{X,Y,Z,W} from the polyfill / spec.
Update benchmarks not to use zero() anymore.
Merge pull request #87 from sunfishcode/shiftByScalar

Shift by scalar
Merge pull request #79 from sunfishcode/master

Fix support for unaligned loads and stores
Merge pull request #77 from bnjbvr/remove-emulated

Remove instructions that can be emulated, fixes #68
Initial int16x8 and int8x16 support

https://github.com/johnmccutchan/ecmascript_simd/issues/75
fromInt16x8Bits and fromInt8x16Bits conversions
int16x8 and int8x16 constructors
int8x16 and int16x8 arithmetic
int16x8 and int8x16 load and store