debug: added formatted debugging (debugf function)

The debugf function can be used in much the same way as printf. If
the global `debug` variable is non-zero, it will print "DEBUG: " to
the standard error stream and then forward all arguments to the
vfprintf(stderr, fmt, ...) function.

FIXME: This could cause problems when trying to combine multiple
calls to debugf to trace complex data structures or algorithms. For
example,

    char *p;
    int i;
    for (i = 0; i < 3; i++) {
        debugf("%d ", i);
    }
    debugf("\n");

will print "DEBUG: 0DEBUG: 1DEBUG: 2\n". I'm not aware of any
simple and elegant fix for this issue.
main: added command-line option parsing

Command-line options similar to those available in C# sass have
been added. Options are parsed using GNU getopt_long. Short and
long options both with and without arguments are supported.

Arguments (filenames, macro definitions, etc.) are
collected for processing after option parsing. Flags (verbose,
debug-mode, nest-macros, etc.) are set immediately. Information
dumps like --help and --list-encodings (not yet implemented) are
immediately executed and then the process exits.
display_help: added meaningful --help output

The -h and --help options will now print usage information, an
explanation of the various options that can be passed to the
program and some examples of usage.

One potential issue, although quite minor, is that the alignment of
lines in the examples section will be poor if the program is not
run from an executable with an argv[0] that is four characters long.
For example, "sass" is fine and the output will be correctly aligned.
However "./sass" or "sass.exe" will make some of the text look like
it is aligned oddly.