create_snapshot: snapshot in a custom directory

Added snap_dir parameter to the 'struct ploop_snapshot_param'.
Create snapshot in the snap_dir if specified.

Reference: PSBM-26605
Reference: ploop@1071281
create_snapshot: normalize snap_dir

Do snap dir normalization to correctly process in
xml.c:normalize_image_name()

This is additional fix to commit ploop@1071281.

Reference: PSBM-26605
Reference: ploop@1076505
ploop_create_temporary_snapshot: add snap_dir

Allow to create tsnapshot in a custom directory.
Added snap_dir parameter to the 'struct ploop_tsnapshot_param'.
Create tsnapshot in the snap_dir if specified.

Reference: PSBM-30194
Reference: ploop@1083393
ploop_merge_snapshot_by_guid: handle dd.xml save failure

Prepare temporary DiskDescriptor.xml and rename after
successful merge. Otherwise ploop images stack remains
in an inconsistent state in kernel and userspace.

Reference: PSBM-30291
Reference: ploop@1083936