Fix for https://github.com/Factual/drake/issues/34

1. Switched from absolute output filenames for generating temporary directory names to relative, because they're shorter.
2. Implemented maximum directory length restriction.
3. Temporary directory uniqueness is now ensured before steps are run, on the parse tree level. Disambiguated with .0, .1, … indexes.
4. Better logging.
5. Some cosmetic changes.