runCmd: let -> where
Better error about .PHONY with commands
A single multi-line shell command, rather than multiple commands in each
target

When interpolating via local Parsec parsing, make sure no trailing
garbage exists.
Print build successful