Flat File IO

This is a pretty basic prototype of `.save` and `.load` methods for `Context`. 

These mirror the corresponding numpy methods.  Right now, save just exports the DAP data structure and pickles it.  The data is written to the filename string given plus the `comm_rank` on each engine.  This should be improved, as the engines may not always have the same ranks and thus may not always be able to see the file we want them to see.  Maybe giving an explicit filename for each engine is the only way.  Some background research is needed.

Also, generalize `from_distarray` to take a bare dict.

Now, this method will take an object with a `__distarray__` method that returns a dict, or it will just take a bare dict (provided this is a distbuffer dict as defined by the distributed array protocol).