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.
Don't use floor for float-to-int conversion

The default rounding for float-to-int conversion should be truncation,
rather than floor.
Use consistent coercion in constructors

Make the SIMD constructors convert their scalar operands to their
desired types.
Simplify constructor coersion

Use |0 instead of a function which does conversion to int32 using a typed
array, and use Math.fround when available for converstion to float32.
Tests for floating-point comparisons.
Tests for integer comparisons.
Additional tests for abs, neg, and div
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.
Merge pull request #88 from sunfishcode/tests

Miscelaneous tests
Merge pull request #82 from sunfishcode/ctors

Fixes and tests for constructor functions
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.