Start implementing parallel resolve

This commit adds a dependency on gevent and adds an execution
monitor. This is used to run expand/resolve operations in
their own greenlets.

If 2 greenlets both request the same resource it will only be
resolved once. They will both be suspended until it is ready.

Paradox and cycle detection is handled by the monitor.