4621: implement lean_uri_escape

lean_uri_escape implements URI escaping as in URI::Escape, but with
substantially less RAM (at the cost of less error checking).

Also fixes a bug in crunch-job's strftime call.
4621: collate_output pipes to python

Rewrote collate_output as create_output_collection, writing its output
data to a Python subprocess that invokes
arvados.api().collections().create().  Writing very large collection
manifests in-process makes Arvados.pm consume inordinate amounts of
memory.

Refs #4621.
4621: code review feedback

Removed @jobstep == 1 optimization (no longer appropriate now that we
expect this function to always return the hash of a collection).

Clarified error message for timeout errors.
4621: drop unused variable $output_in_keep
4621: undo lean_uri_escape changes
Merge branch '4621-crunch-memory-usage'

Refs #4621.