Make TokenStream optional

Making the TokenStream optional turns the formatter into a CodeWriter,
which is totally awesome.

Implements and closes #17.
Add a nice interface for the formatter

For normal users, it might not be apparent that they have to call
    compilationUnit.visit(FormattingVisitor(tokens, output, options))
so this commit introduces the format function with the following
signature:

    format(compilationUnit, options, output, tokens)

where only the first argument is mandatory.