Refactor to allows Location to have a parent.

Because backends now return locations it makes sense to be able
to base a Location of another Location from which it is offset.
Prevent Locations with parents they don't fit in.

TODO:
  Unit tests.
Rework best_convolution for greater clarity
Comments on convolution
Comments on convolutions & code cleanup for clarity
Bug fix: result from convolution match. Result is inside template
Tests for convolutions
Further tests for padd_bin_image... and docs
Rename variables
Add some comments