Refactor string functions, add str_fromprint()

Move lots of non-Serval-specific string functions from "serval.h"/dataformats.c
to "str.h"/str.c.

Add str_fromprint() function that reverses the effect of toprint(): interprets
escape sequences in the source string "\n\t\r\0\xHH\\" and replaces them with a
single char in the destination string.
JNI interface returns byte[] instead of String

This allows the output fields of any command to contain nul characters, which
paves the way for extracting a manifest or other binary data directly instead
of having to write it into a temporary file.
Get rid of unwanted DEBUG line
Improve test framework: --line=N..M for assertGrep()

Support the --line option for assertGrep, assertStdoutGrep and assertStderrGrep
primitives to select a line or range of lines to which the grep will be
applied.
Rhizome extract manifest to '-' writes to output

Instead of specifying a file path, if the file is given as '-' then the content
of the manifest is output in the 'manifest' key-value pair instead of written
to a file.
Quieten some unconditional DEBUG messages
Intial notes for OpenBTS setup documentation
Allow for with slightly longer paths
Dampen logging
Fix fetch process for manifests with the same payload, make sure failures don't get stuck in a loop
Fix segfaults
Fix warning
Update expiry time on each add
Only respond with multiple matches if the key is the same
Improve performance timing diagnostics

Add __whence args to fd_func_enter() and fd_func_exit() so that their log
messages get reported from the location of the IN() or OUT() macro, not a line
in performance_timing.c.

Removed diagnostic information from the FATAL() message in fd_func_exit(), and
a comment explaining why (causes SEGV).
FATAL() macro calls abort() to provoke core dump
Fix bug in 'rhizome list' command

Missing RETURN(), was using 'return' instead.
Don't kill the interface for unreachable unicast peers
Move rhizome fetch info message to end of transfer
Fix bug in 'rhizome direct pull'

Was not fetching payload of remote bundle, just manifest.  The problem was
caused by a change of logic recently to not activate any queued fetch
candidates immediately, but wait until the next fd_poll(), so that parsing a
single packetful of rhizome advertisments would start fetching the most
important one first, instead of the first one parsed.