Clean and update build output more intelligently

Fixes #183.
why is outputFolder passed in? this method could easily get that info itself