phlsys_textconvert: add to_unicode() for safety

This will raise an exception: unicode(unicode('hello))

Sometimes we need to ensure something is unicode at more than one
place and 'unicode()' seems to be the way to do it.

Provide a 'to_unicode()' routine to safely ensure that the supplied
string is a 'unicode' builtin.

Test Plan:
added breathing test to test driver
$ ./precommit.sh
phlsys_textconvert: add ensure_ascii() for safety

When we get byte strings with non-ascii characters from external
sources, we run the risk of a conversion error when printing or
converting the string to unicode.

Provide an 'ensure_ascii()' routine to safely ensure that the supplied
string is a valid ascii byte string.

Test Plan:
extended breathing test
$ ./precommit.sh
abdt_conduit: use new to_unicode() routine

Test Plan:
$ ./precommit.sh
abdt_branch: ensure output is ascii

Test Plan:
$ ./precommit.sh

create a review and specify a reviewer with U+2026 in their name, verify
that a warning is successfully reported after the code change but not
before.
$ ./testbed/arcyd/test_shell.sh
phlurl_watcher: add 'peek' to enable transactions

Make it possible for clients to use the 'newness' of a url's content in
a transaction by providing a 'peek' method which does not consume the
'newness'.

Test Plan:
Updated test driver

$ ./precommit.sh
Arcyd: mark repo as fetched *after* fetching

Repositories should retry fetching if fetching failed for any reason, if
they repeatedly fail then the 'schedule unrealiables' routine will
decide whether and when to keep retrying.

Consume the 'newness' of the repo 'snoop_url' only if fetching is
successful.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh