Don't double-include source with COMPILEOPTS

This fixes a bug where sources that had COMPILEOPTS specified as
attached to just them would be included in the build twice: once with
the option and once without it.
Add a bit of documentation

This is more of a skeleton of the documentation, but it at least
documents the command-line arguments so people can (in theory) use
them for something.
More documentation writing

I re-ordered some stuff as well as adding descriptions to some of the
commands.