Cleanup and... Robustification?

Hey Revan, finished with those changes I was talking about. Here's what I've got:
 * Cleaned up a few comments
 * Changed one-line loops into list/dict comprehensions
 * Set stdout as default output if none is provided
 * Made ingredients into a list
 * Python 3 compatibility
 * Made indented json output an optional feature