switch models world from "2d array of objects" to "object of typed arrays

This is kind of a huge commit, and there's a lot more to be done.

I'm switching worlds from being a 2d array of objects to being objects of 1d typed arrays.

So before we had
```js
water.world[x][y] == {
  volume: 1,
  elevation: 2,
  siltFloating: 3
}
```
Now, for the same (x,y) we have:
```js
idx = water.width * y + x;
water.world.volume[idx] == 1
water.world.elevation[idx] == 2
water.world.siltFloating[idx] == 3
```
These arrays are typed contiguous arrays like `Uint32Array`, `Float32Array`, etc.

There's more to be done. Sampling is especially inefficient, as I kept the previous interface. So when you `water.sample(x,y)`, that samples *all* the arrays and builds an object to return. Sampling should probably then specify a field to sample.
Yeah I'm into that. I've been kinda reluctant to use Traceur features in full force. So far I had limited myself to classes, modules, arrows, and maybe array comprehensions. There are many other features available: https://github.com/google/traceur-compiler/wiki/LanguageFeatures

I think instead of using whatever features Traceur makes available, we should decide on a sensible subset and use that decidedly, and decide together when we start introducing a new feature. Here's a proposal for now:
* modules
* classes
* arrows
* for/of
* comprehensions
* default parameters
* rest parameters
* destructuring