Handle double path registration

Canonicalise paths from /var/lib/use-ephemeral/stateful-paths and only
copy files from a path once.

This means that if path /a is registered twice, you don't end up with
/mnt/state/a/a.

Note: symlinks must be relative for this to work. Rewriting absolute
symlinks can be a follow-on patch.

Example (hacked slightly to work as if boo was root):

  $ tree boo
  boo
  └── var
      └── lib
          └── use-ephemeral
              ├── a
              ├── b -> a
              └── stateful-paths

  $ tree boo
  boo
  ├── mnt
  │   └── state
  │       ├── a
  │       └── b -> a
  └── var
      └── lib
          └── use-ephemeral
              ├── a
              ├── b -> a
              └── stateful-paths

Change-Id: I60eb87f44b8b8d122cb4af472327d390e8ba4c23
Co-Author: alexisl@hp.com
Symlink to backup dir until ephemeral storage available

Currently, when you call `register-state-path --leave-symlink /a`, a
symlink is left at /a pointing to /mnt/state/a. However, /mnt/state
doesn't point at ephemeral storage until the instance has booted. So if
another element tries to write through the symlink, it goes wrong.

This patch defers moving content (and leaving a symlink if required) to the
backup dir until finalise.d runs.

Change-Id: Id5bc25965db1fdf27f2bcb947c518f6f4566fd2f
Co-Author: Nicholas Randon
Merge "Handle double path registration"
Merge "Symlink to backup dir until ephemeral storage available"