Refactor HTTP string utils into str.[hc]

Improve "str.h" layout and commenting.  Re-implement hexvalue().
Refactor URI character class functions

To use array lookup instead of boolean OR expressions
Refactor Base64 decoding from HTTP server to str.c

Also add a Base64 encoding function, not tested yet
Fix off-by-one buffer size errors when using tohex()
Add base64_encodev() multi-buffer Base64 encoder

Also replace base64_encode_len() inline function with macro
BASE64_ENCODED_LEN()
Encode HTTP /restful/rhizome/bundlelist.json token in Base64
Improve HTTP /restful/rhizome/bundlelist.json token

Now tokens are included in each row instead of a single token in the
enclosing JSON object.  Only puts tokens on the first row, and
thereafter all rows with a rowid higher than for the previous row that
had a token.
Add Base64URL encode/decode functions
Implement HTTP /restful/rhizome/newsince/.../bundlelist.json

Not tested
Reduce Rhizome SQL trace logging to once per prepared statement
Improve 'debug.io' fdqueue.c debug logging
Add HTTP server pause response function
Rhizome list cursor 'rowid_since' semantics

Setting 'rowid_since' now causes the cursor to iterate over bundles
in chronological order (oldest first) from that rowid upward.
Implement HTTP /restful/rhizome/newsince/.../bundlelist.json

Now functions as per requirements, blocks for 60 seconds sending
new bundles as they appear, sends new token with each new bundle.
Tested manually.
HTTP /restful/rhizome/newsince/... token validation

Ensure that token has the same UUID as the Rhizome database.
Improve test framework: slightly clearer logging
Test case for HTTP /restful/rhizome/newsince/...

Not passing yet
Add 'rhizome.api.restful.newsince_poll_ms' config option
Improve test framework: better fork functions

Replace forkKillAll with fork_terminate_all

Replace forkWaitAll with fork_wait_all

Add fork_terminate and fork_wait functions

Introduce fork labels '%<alphanumeric>' as arguments to all fork
functions

Treat a forked process exit status 143 (killed with SIGTERM) as a
failure or error -- it happens when a forked process is terminated
using fork_terminate or fork_terminate_all
Improve test framework: shell backtraces

When in a the finalise part of a test (possibly as a result of a
failure or error), make sure that shell backtraces do not list the
test case functions that failed, since they have already been
reported in a backtrace at the point of failure