In Penknife, refactored compileAndDefineFromString() and invokeFileTopLevel() to use no mutation. Also, extracted most of their functionality to processCommands(), a separate function.
In Penknife, used jsListFromArr() where appropriate. Updated several TODOs. Made a list of ways the Penknife implementation code violates a pure FP style.