_create_and_load_v4: propagate ioctl errors back to caller
When setting up dm-verity devices with signed root hashes it is very useful to have a recognizable error code when a key is not present in the kernel keyring. Turns out the kernel actually returns ENOKEY in that case, but this gets lost in libdevmapper.
This fixes this: in _create_and_load_v4() it copies the error code from the ioctl from the sub-tasks back to the main task field on failure.
This is not enough to make libcryptsetup actually propagate the ENOKEY correctly, that also needs a patch to libcryptsetup, but this is part of the puzzle.