Implement semantic-only flag for the compiler.

This is a very useful functionality to check that a given Orly program is valid syntactically and semantically. The web console could benefit from getting a button to perform this operation so that we don't have to compile the package every time we feel like we made some progress.
Doing the local then returning here might cause an extra copy (Returning from multiple different scopes in a non-trivial function doesn't always get NRVO optimized). But practically it's not going to be where we're slow. So good enough for now.