Cyclic dependency checking

Previously there was no way to detect cycles in the dependency graph between tasks. Through the addition of a -C/--cycles CLI option, users can now programmatically find all cycles in their phake tasks.
The number of cycles found, and the names of the tasks in a given cycle will be displayed. This makes identification and modification of cycles easier.
Detect cycles by default, with an option to run unsafely

Instead of requiring the user specify -C/--cycles to run cycle detection, we run detection on every invocation. If any cycles are
detected, they are displayed, an exception is thrown, and the current invocation is aborted.

Should the user want to run Phake without cycle detection, they can specify the -u/--unsafe CLI option.
Merge branch 'orbgrp-feature/cycle-detection'