wrapper for constructing, removing and handling with semaphores

Yo a este nivel haría un thin wrapper sobre semop a este nivel. En vez de un waiting y un available, yo haría un `sem_op(int id, int semnum, int amount)`, donde `amount` puede ser positivo o negativo. Te digo de hacerlo así porque sino esto es una API de un semáforo binario, que si bien es cómodo lo podemos implementar a nivel del RAII, y eso nos permite implementar otros tipos de semáforos (como los multietapas, que aumentan de a N atómicamente y disminuyen de a uno, que es lo que vamos a necesitar para la calesita).