Thread-safe task groups

The task group functions are now (mostly) thread-safe.  (The main thing
that is still not thread-safe is marking that a group should be executed
after some other group has finished; this is thread-safe for the
“before” group, but not for the “after” group.)

In addition, the API has been cleaned up a bit; in particular, there are
now four explicit states that a task can be in, as described in the
flt_task(3) man page.
Type-specific flt_local accessors

Most of the flt_local functions now take in the type of the instances
being managed.  This is repetitive, but it means we have remove one
layer of pointer indirection in our implementation.  Since flt_locals
are used in a quite a few hot code paths, this actually has a noticeable
impact on the running time.

This means that instead of `new` and `free` callbacks, you provide
`init` and `done` callbacks, since the flt_local manager allocates a
single array of instances.  To eliminate false sharing, we pad each
instance to the size of a cache line (which we're currently hard-coding
as 64 bytes.)