Fully compiling JHM

Doesn't have any registered jobs, but if you ask it to build a file which
exists it doesn't SIGSEGV/terminate/etc.

Updated readme
Add program which takes a given file and creates a file which lists its dependencys (.dep)
jhm: First working job (A C/C++ dependency file generator).

Dep files are json lists of files included by a C/C++ file.

Includes misc. changes around the codebase to get things working right.
jhm: Allow jobs to indicate that just because they ran, they may not be complete

If they're not complete, we'll make sure to finish all the things now in their 'Needs' set, then get/run the command again.
jhm: TEnv::TryFindFile -> TEnv::GetFile

The function always returns a file, so it's not really a 'Try'.
Implement configuration system for JHM

Allows stacking multiple Json config files together and having them automatically combine sections.
jhm: rename TCDep job to TDep as it builds arbitrary dependency files.
jhm: Add a "Compile C/C++" job.

Includes misc. changes to make things work with more jobs / fix misc. bugs uncovered.
jhm: Fix work finder bugs

 - Reverse backwards bool in fast exit of TWorkFinder::Queue
 - Make working have a tighter definition (We loop needlessly less)
 - Fix indentation of TWorkFinder::ProcessReady
jhm/job/dep: Remove old comments
jhm: Add a link job. Gets basic binaries compiling.
jhm: remove extra space
jhm: Allow jobs to have unknown outputs
jhm: Add support for nycr

And misc. bug fixes
And misc. feature adds (Namely jobs which don't know all their outputs up front)
jhm: Reorder c/c++ compile arguments so filename comes first
jhm: Reimplement job_runner independently to be correct/cleaner.
jhm: add flex, bison jobs
Build our standard targets by default
jhm: Add a status line
starsha/status_line: Change the escape codes to make the status line hide itself better.