Fix missing mutex release when aborting builds

Currently when zuul aborts a build due to e.g. abandoning a change the
mutex doesn't get released. This blocks all further jobs requiring the
mutex until zuul is restarted. This adds test cases for detecting this
and the missing mutex releases.

This is a port from I37e69310fed045c5a41bd4eccb151c8826f342ea to
zuulv3 branch.

Change-Id: I5e78bdf4e37227027e3a16fb88bae1a0c2002aaf
5 files changed