SVC: Implemented Semaphores

This probably still needs a little more testing, but at least the behavior is consistent with hardware in the tests i've performed (See here: https://github.com/Subv/3ds-homebrew/blob/master/semaphore/source/main.cpp )
`current_usage` is not initialized. This is UB. Even if it were initialized to say, 0, this would immediately underflow the `u32`.