Port Compile command to Core

Here is the initial port of the Core command. It depends upon the changes made in #55. I rebased this change branch off of the one for #55, so... This pull request is meant to address #42. Maybe you should comment on that issue, but I'm unsure of what else you want me to add, bruh. For this request focus on the commits after 8e553df.

The notable (i.e. horrible) feature of this patch is that <code>Build.run</code> must now return unit, rather than the exit code. I fix this situation in 746b5c6a35e33ed038824695a0d5d6cae02f2713, which is included in the massive #52 so I will attempt to <code>git cherry-pick</code> over into whatever branch (and corresponding pull request) does the <code>harness</code> command.
why's this exported?