devmapper fix usage of pool transaction id 

Fixes Issue: #9257

There are multiple issues with current devmapper usage of pool transaction Id. This patch series tries to fix these.

Details of problem and proposed fix are available in Issue: #9257

Thanks
Vivek
It used to keep track of open device ids in user space, but this was changed to rely on the kernel for two reasons. First of all it seems non-robust to keep this in two places that may diverge, and secondly because I removed the one-global-metadata-file in order to be able to support mounting devices from multiple processes.

I'm not sure we need to have a full userspace use tracking though. Can't we just mark in the transaction file if we were doing a create or a delete. Rolling back a delete should always remove the device, but if we roll back a create we just leave any created devices around to avoid the issue with existing devices. The worst that could happen is that there are a few leftover thin devices after a crash. Is that so bad?