Use some Ceylon APIs instead of Java APIs

Most notably, FormattingVisitor now takes a ceylon.file.Writer instead of a java.io.Writer
Complete overhaul of the way tokens are written

This introduces the FormattingWriter class, which handles buffering and
writing of tokens. This is necessary to implement a maximum line width
(#7), but ironically enough, that’s the only thing I didn’t yet implement :)

This commit is the result of ~2 weeks of on-and-off work; you can see
WIP commits on branch ‘implement-7’ (head: ‘43581f2’). I decided not
to merge these commits because they have crappy commit messages, are
unstable and don’t follow the principle of “one change per commit”.
This commit introduces a very large change, but it can’t really be
broken into smaller commits without these commits being uncompilable.

All tests green.