Port smoke command to core

This one needs to sync with compile, clean, diff, and eventually harness, but it's 90% done.
We should pass in the release folder as an option, and copy in `.mli` files and starter code.