Make models be layers of DataSets

I ported part of Agentscript's DataSet along with the necessary subset of Util. I didn't port anything that had to do with images, canvases, patches, and so on. *A lot of it is untested.* I plan to port the Raster class from ecostem-sand to this and will be testing resampling and interpolation.

I replaced typed arrays in models with DataSets wrapping typed arrays.

I added some more get/set utility functions to DataSet.

I added some more helpers to BaseModel having to do with transfering data between layers or between indices within a layer.

I ported the models to take into account these changes.
I guess this could be changed to `newDS.setXY()`. But why not just fill up an empty array and use that to initialize the new DataSet in the end, like in https://github.com/backspaces/agentscript/blob/master/extras/data.coffee#L170 ?