A generic implementain of a simple multi level lock.
The idea is to have an ascending number of lock levels ranging from
0 to maxLockLevel as specified in
GenericLock.GenericLock(Object,int,LoggerFacade) : the higher the lock level
the stronger and more restrictive the lock.