Change external runner interface to spawn fewer processes.

This passes the expected number of hits and/or expected duration through
to the external runner process, so that it can manage that loop internally
rather than spawning a new process for each hit.
Add documentation on the new external-runner protocol.
Revert name-change of the "nb_steps" attribute on external runner class.

I had changed it to "num_steps" for my own clarity, but the "nb" prefix is
used elsewhere i nthe codebase so there's no point in making this one
inconsistent.
Fix flake.
Improve handling of directories and relative paths in --include-file.

This commit introduces a pair of utility functions pack_include_files and
unpack_include_files.  The former slurps up the specified files and directories
into a single binary blob, and the latter unpacks that blob into the required
structure.  (The blob is a zipfile, but that's an implementation detail.)

This makes it easier for --include-file to reference whole directories, to
include things in paths other than the current directory, and to preserve
file permissions on the included files.
`addError` and `addFailure` are passed a tuple of 3 items, not one item.

Store just the traceback. Update the tests to reflect
Merge pull request #186 from mjpieters/funkload-export

addError and addFailure are passed a tuple of 3 items, not one item.
Merge pull request #185 from mozilla-services/rfk/include-directories

Improve handling of directories and relative paths in --include-file.
Merge pull request #184 from mozilla-services/rfk/external-runner-refactor

Refactor the external runner protocol to spawn fewer processes.
make sure unpack_include_files accepts unicode