make ProjectLock reliable

@steved555 @pswadi-zendesk @jwswj @bolddane 

 - reliable unlock via ensure
 - renamed to MultiLock since there is nothing project specific about it
 - remove multiple mutexi + mutex extension
 - added tests
 - not printing any message / waiting when lock is free

### Risks
 - None
`until Time.now > end_time` ?