process: Inject the Printer ctor into ProcessManager
Move tests into honcho module
process: Inject the Process ctor into ProcessManager
printer: Inject environment

This also removes the need for the mock library.
process: Add first few unit tests for ProcessManager
Update .travis.yml to reflect new test location
coverage: Adjust coverage config for new test location
Move queue import handling to honcho.compat
coverage: update HTML report directory name

This appears to have changed from 'htmlcov' to 'cover'.
process: Read stdout from "quiet" processes

It seems that simply not reading data from the STDOUT of quiet processes
could lead to all kinds of buffering problems. All we really need to
achieve is silent output, so this commit moves the conditional inwards
-- output is read, just not relayed by Honcho.
process: Allow suppression of the SIGKILL fallback

In order to be able to test the behaviour of ProcessManager#terminate(),
I need to be able to call #terminate() from a non-main thread. Calls to
signal.signal(...) are invalid on a non-main thread, so this commit adds
a kwarg to #terminate() to allow me to suppress this behaviour.
process: Cover more of ProcessManager's behaviour
environ: Fix broken tests

The "yield <callable> <args...>" pattern doesn't work with this version
of nose.
process: Inject Popen into Process, don't subclass

This makes the Process class substantially easier to test, and means we
can more fluidly refactor it.

This commit also adds a full set of unit tests for Process.
process: Consolidate to a single printer

This commit simplifies the process by which Honcho relays process output
to another place. Previously, every Process object had its own printer
instance, which knew what colour and name to print for the process. Now,
there is just one Printer instance, which needs to know only the width
of the prefix column, and each line printed by a process is relayed to
the printer with colour and name information.
process: Use length of reported process name

The Process constructor might munge the process name (and indeed does,
in our case, when the "quiet" kwarg is True) so use the reported name
after the constructor has been run, and not the passed name.
process: Add tests for line ordering and colouring
command: Ensure output encoding is UTF-8

Thanks to @ratazzi for the report and proposed fix.

Closes #76.
Major rework of Process, ProcessManager

This is a large rework of the core of Honcho, namely the ProcessManager
class, which in this commit is renamed to Manager.

The motivations for this set of changes are:

1. In general, test coverage on Honcho is pretty poor, which makes
   making changes to the core risky. If the core of Honcho were
   beautifully designed and bug-free, this wouldn't be an issue, but...

2. ...there are a number of nasty bugs in Honcho which relate either to
   concurrency issues (#61) or inappropriate handling of child processes
   (#70, #39, #32). At least some of these bugs will need some quite
   substantial reworking of the core to fix.

In particular, most of the test coverage comes from some rather nasty
integration tests. Making any changes to Honcho's core require updating
almost all the integration tests, and I want to get rid of them, but I'm
not comfortable getting rid of them until we have sensible unit test
coverage.

So. This commit pulls apart `honcho.process` into two modules,
`honcho.process` and `honcho.manager`, each with a start at some decent
unit tests.

`honcho.process` contains the Process class, which now handles spinning
up a child process and forwarding lifecycle events and output from that
process to a queue.

`honcho.manager` contains the Manager class, which has an almost
identical external API, but dramatically reworked internals. In
particular, its hardcoded dependency on Process and Printer has been
broken so that it can be more effectively tested. The division of
responsibilities between Printer and Manager should now be clearer.

The test coverage on Manager is still not what it should be, due at
least partly to the difficulty of testing such a fundamentally parallel
object. There is, however, the start of a reusable test harness in
test_manager.py, which should make life easier for a range of tests.

Lastly, most communication with the outside world (retrieval of the
current time, os.kill, etc.) from Process or Manager is now mediated
through `honcho.environ.Env` to make it easier to replace these
functions with fakes when testing.

This commit should fix #32, #59, #61 (and #62), #66, and #76.
test: monkeypatch multiprocessing.Process for coverage

This commit adds a nasty monkeypatch, stolen from

    http://blog.schettino72.net/posts/python-code-coverage-multiprocessing.html

which allows Ned Batchelder's coverage library to track code execution
across forked processes (i.e. multiprocessing.Process instances) when
tests are running.

This allows us to get realistic coverage reports for
honcho.test.unit.test_manager, which runs some code in subprocesses.