lib: stricter checks when resuming an operation in progress

When an operation is in progress, we used both state management and some
canary value to check if the user is resuming the right operation. The
canary was just a pointer and it was easy to get the same pointer as the
previous operation while not really resuming the previous operation. We
turn the check into a string comparison instead.

Moreover, add checks when setting configuration items too.