Initial (positive) test suite

In order to support a test suite in which the input files are in a
special self-contained directory, I had to make a few changes:

- No longer assume file names are just the base name but a
  fully-qualified file path. This means that we can no longer use the
  file name within the output file names or the assembly symbols.

- Load required modules from the compiler base directory (this can be
  changed to be a special "includes" directory in the future).

- Add another form of "require" that takes a string instead of a
  variable. The string represents a relative (or technically even an
  absolute) file path based on the location of the file in which the
  "require" appears.

Note that this is just the positive test cases, not any failure cases.
Furthermore, there are a lot of tests that should be added even for the
positive case, though I brought in (almost) all of test.scm as a
positive test case, so pretty much all features should be tested, just
not in isolation.
Start of failure tests

A key observation is that any test may fail during either the
compilation or the running stage.

In the case of the success tests, I added some granularity so users can
see which stage failed. For failure tests, the condition we want to
avoid is if *both* run successfully, so that granularity is not needed.

I also added some helpful logging, including outputting the currently
running test, which is then cleared after the test finishes running.