Added try_P() alternative to try_acquire()
Implemented the Lockable interface in semaphores.

Now semaphores can be used with std::unique_lock and
std::lock_guard.