base: Allow set size to be a numpy array
Convert halo send/receives pairs into dicts

Firedrake builds halo send/receives as dicts, not lists that are empty
when nothing is to be sent or receive.  So update here as
well (convert existing list syntax into dict as appropriate).  This is
better because we iterate over the halos in python and for large
numbers of processes this might be slow.
Fix up pickled Halo objects for new send/receive dict format

This allows old dumps to continue to work.
Update MPI mass demo for new Halo format
Merge pull request #200 from 'OP2/convert-halos-to-dict'

We should have halo send/receives slots as dicts to begin with.  This
change does that, and brings us in to line with what firedrake halos
look like too.