src/lse/semaphore.cpp: throw exceptions in error cases, except from the destructor, instead of merely logging them

 - try_wait was also modified to handle the case where a non-blocking semaphore "wait" is impossible, and only throws an exception if that is not the error encountered
     - this method now returns a boolean, which tells the caller if the wait call was successful or not
 - underscore some method names, instead of camel case
     - update method usages to reflect these changes