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.
Do we need to revert this to Owen's original `neighborhood()` method so that `convolve()` works? Otherwise the kernel won't be the same size as the neighbors array I think.