add three semaphore implementations and make wakeupSem configurable
To further investigate #12 I added a futex based implementation and changed Runtime.wakeupSem to emper::lib::sync::Semaphore
.
The default semaphore implementation uses a POSIX semaphore and should be equivalent to the current master.