MAINT: Refactor of regrid

Added clarity by the inclusion of a new unittest and also a refactor of
the code which clarifies code path.

This is the beginning of a possible enhancement to come for generalising regrid to handle points and grids.  I have taken away the support for handling points in this PR as there was a greater complexity in the logic for handling both grids and points with broadcasting for the general case (this may come in a later PR).