Provide errors with faulty -o or --out-dir usage

It is possible a user might enter faulty path information with either the -o
or --out-dir parameters for rustc.

There are two conditions for `-o` that this commit targets.
    1) if the provided path contains a non-existent directory, return an error
        message and the absolute specified path.
    2) if the specified path is a directory and not a file, return the path
        and an error message.

There are also two conditions on which `--out-dir` can fail:
    1) if the specified path doesn't exist, return the absolute path and an
        error message
    2) if the provided path isn't a directory, return the an absolute specified
        path path and an error message.

Tests have been added as well.

A new makefile variabe RUSTCNOARGS was created in tools.mk to facilitate
running the compiler without any options. This is necessary because the main
RUSTC variable contains the `--out-dir` parameter; this parameter needs to be
specified or avoided in all of the new tests.