Added try_lock to Mutex

The `Mutex` struct previously had no try_lock. This patch adds it.
These aren't quite the semantics of a `try_acquire` that I would expect. This is only using `try_lock` to grab the internal mutex, which is uncontended most of the time. What I would rather expect is `try_acquire` to attempt to grab a resource of the semaphore.

If you add some simple unit tests (which are required anyway), you will likely discover this quickly.