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.
Merge pull request #14 from tonysimpson/master

Improvements to Location