latch: move off of g_* stuff
dlist: always set `data` and `n`

When removing things from the list, it's sometimes pointless to check
error values when all you care about is if `data`/`n` is NULL. Error
values still remain for the case where `NULL` is inserted as data so
that it can be differentiated from an empty list NULL.
mock: init mutex with constructor since c11 mutexes aren't inited by default
thread pool: First go at a thread pool that responds to errors