Basic single-threaded scheduler

This patch adds an incredibly basic implementation of a single-threaded
scheduler.  The fleet only creates a single execution context, and all
of the tasks in the fleet are run within that context, within the thread
that calls `flt_fleet_run`.  The implementation isn't really optimized
at all, but it will serve as a baseline to experiment with, and to
compare a future multi-threaded scheduler against.
Performance tests

I made some example fleet computations for the test cases in the
previous patch.  In this patch, I've extracted the implementations of
those examples into separate files, and parameterized them so that you
can run them on different input sizes.  The test cases run the examples
on fairly small inputs, because we only really care about correctness
there.  There's now a new performance test program (which is not run as
part of the standard test suite), which runs each example on larger
inputs, and outputs the running time of each one to stdout.  This will
let us track how future changes affect the performance of the library.
Cache used task entries

The single-threaded scheduler now caches used `flt_task` instances in
each execution context.  The sequential_run and concurrent_batched test
cases now run much more quickly, since this greatly reduces the number
of `malloc` calls we have to make.  For sequential_run, it's now O(1),
and for concurrent_batched, it's now O(batch_size); before they were
both O(input_size).  The concurrent_unbatched test case isn't any
faster, since it still has to make O(input_size) `malloc` calls.
Allocate task instances in batches

We now allocate task instances in 8Kb batches.  This reduces the number
of times we have to call `malloc` when allocating a largish number of
tasks.  The concurrent_unbatched test case is now twice as fast.  Still
much slower than the others, because of how many tasks we allocate at
once before running anything.  But better than before.
Merge branch 'feature/single-threaded' into develop

* feature/single-threaded:
  Allocate task instances in batches
  Cache used task entries
  Performance tests
  Basic single-threaded scheduler