Implement parallel builds

Summary:
You can now run falcon with -j|-jobs option to build in parallel. It will use
the number of cpu cores as the default value.

There is a new class called "BuildPlan" which takes care of scheduling the rules
that need to be built. GraphSequentialBuilder is replaced by a new class
GraphParallelBuilder which uses BuildPand PosixSubprocessManager to run the
commands.

I also added the --json option which makes it possible to ask the python client
to display the json output as it is received from the daemon instead of parsing
it.

Test Plan:
Run a build with --jobs 8 and check that it is building in parallel.

Note: I added a counter "numInputsReady_" in Rule. This is to keep track of the
number of inputs that need to be rebuilt before the rule is ready to be builty.

Reviewers: NicolasDP

Reviewed By: NicolasDP

Maniphest Tasks: T17

Differential Revision: http://91.121.199.76/D50