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.