Add Flat File IO

Add `save` and `load` methods for `LocalArray`s and `DistArray`s.

`save` for a `LocalArray` writes to a flat datafile format (`.dap`) inspired by the `.npy` format from numpy.  See the module docstring on `format.py` for details.

`save` for a `DistArray` saves the `LocalArray` on each process to a file named `<filename>_<comm_rank>.dap`.  This API could probably be improved.

This PR makes use of PR #138.

`make test` fails, but I believe this is because of a problem with the test structure in other files that @cowlicks has fixed in another PR.  The Distributed IO tests I have written pass when run individually.