The "BlockT" type-param to BlockArray no longer needs to be a subclass of Block.
Add a bit of html documentation.
Add a simple perf-test in test_blocks.cc (currently disabled)...
results show that indirection through BlockRef should be plenty
fast, although they're probably optimistic because the BlockInfo
table remains in cache.

Add job01::time::time_util.h, which provides handy typedefs to
make std::chrono less verbose for our purposes.

Add job01::dbg::ScopedTimer, which times how long it takes a
scope to run (useful for simple benchmarking).
Add top-level perf/ directory, where I will collect my own little
performance experiments.  The first one is to benchmark the difference
between virtual functions and function pointers.
Big change is to add JobX and subclasses.  These make up the internal part
of the job-system... they aren't exposed to the end-user, but they are where
all of the fancy stuff happens.

Add tests for job01::core::meta and job01::impl::jobpool.

Add SCHWA_ONLY_IF_SIZE_BETWEEN to job01::core::meta.

Add core::Queue::empty().

Add convenient printing macros to job01::dbg... SCHWA_OSTREAM and SCHWA_PRINT.

Experiment with some new macro syntax in job01::mem::align.h... still need to
reconcile this with the macros in mem00::align.h.

Remove old job01::job_pool... new version lives in job01::impl, since end-users
will not need to interact with them.

Use "#pragma pack" to trim a few bytes from BlockRef (and therefore JobX).
Careful not to screw up alignment of internal fields!