Changed the way hardwall works.

There are several ways to go about this, but the latest seems
most sensible in the context of DD.  The hardwall function now
uses local shells to get coordinates and such.  The problem is
that after make_local_shells(), the indices are all messed up.
Committing this to preserve the logic, but need to fix this
otherwise parallelization is limited to only OpenMP and performance
is not very good above 4 threads.

Change-Id: I3208519d8704da622b81835604249771d634a28a