Generate .dll file when not running in REPL and not debugging

As discussed with @glennblock yesterday, this is the first PR that basically creates a .dll and loads the assembly from it when not running in the REPL and not debugging. Should it also store the .pdb file when debugging?

**Next steps:**
1. Apply feedback for this PR.
2. Only compile if any of the .csx files has changed.

It might be useful to add more unit tests for the engines before doing more work. In that case, we would need to wrap things such as the assembly loading (Assembly or AppDomain), the Assembly class and other components. Thoughts?