Use a locally cached image if the original is not found.

This only put in place the circuitry to look for an image into the
local cache (default: ~/.cache/darktable) if not available on the
original location.

This simple command dt_image_full_path() has been enhanced to look
into the cache.
Add a way to set/reset an image to/from the cache.
Write the local copy status into the database.
Display the local status into the metadata module.
Add a white circle on the image box in the ligttable area for local copies.

This is a simple marker to see what are the images having local copy
or not.
Allow creation of xmp sidecar for local copies.

So, remove sidecar when the local copy is reset.

This is for safety purpose in case the database got corrupted.
New routine to check whether a file is safe to be removed.

This is used for file having local copy and in this case the
original file must be accessible.
Refuse to remove a picture when a modified local copy exists.

This check is done when the original picture is not available otherwise
we could loose editing done on the local copy.
Do not allow removing a film if containing non local copies.

And if the original picture is not accessible as we want to sync
the .xmp.
New routine to sync all .xmp for local copies.
Try to synch the .xmp for local copies if any at startup.

We want to make sure the .xmp are synchonized with the original files
as soon as they become accessible.
Add message with the number of local copies synchronized at startup.
Merge branch 'local-cache'

* local-cache:
  Add message with the number of local copies synchronized at startup.
  Try to synch the .xmp for local copies if any at startup.
  New routine to sync all .xmp for local copies.
  Do not allow removing a film if containing non local copies.
  Refuse to remove a picture when a modified local copy exists.
  New routine to check whether a file is safe to be removed.
  Allow creation of xmp sidecar for local copies.
  Add a white circle on the image box in the ligttable area for local copies.
  Display the local status into the metadata module.
  Write the local copy status into the database.
  Add a way to set/reset an image to/from the cache.
  Use a locally cached image if the original is not found.