Updated the around pointcuts.

The important issue is to ensure that the lock/unlock methods and the
monitor steps are performed atomically.

This still might not be the best approach - it seems artifical as we
lock an object whilst locking it (tryLock). Perhaps it would be better
protected by the monitor object, but if tryLock is false this introduces
unnecessary contention.