Working find example

This example behaves somewhat like the Unix command 'find' which
recursively descends into a directory listing files contained therein.
Match join patterns before overhead

The user's productive work happens when join patterns match.  Do that
first.  If that's not possible, take care of managerial overhead like
sending new messages.

This makes debugging and tracing easier.  It also makes the code
cleaner since we no longer need a non-blocking event predicate.
Step Jolog when it can't progress

The old hello wold example required a send(halt) at the end.  The find
example never halted at all.  In both cases, it was clear that no
additional progress could be made, so Jolog should stop trying.  It
now does so.

The technique is fairly inefficient since it requires a message each
time a worker starts and another when it stops running a process.  The
manager thread also spends time tracking the number of active workers
even though it may never need that information.  Ideally, when the
manager is about to block, he should ask how many workers are idle and
decide whether to stop.  Unfortunately, I don't see a good way to ask.
Only add Jolog halt clause if needed

If a module imports the Jolog library but doesn't define any Jolog
clauses, don't bother defining a clause either.