Implement Semian API

@Sirupsen, @fw42

This implements the API we discussed the other day: https://gist.github.com/Sirupsen/2c3e0fd18b1ee95de877

The hardest part was writing the tests, but I think I've covered all the case we care about. The tests are the part I care most about with regards to reviewing - the implementation was pretty straightforward.

What happens if two processes try to create the semaphore with this name, at the same time? Do you want to do this in the master and pass it down? Could we instead just make this safe, by using `IPC_EXCL` and `semget(2)` in a loop?