Convert MutableList to ListBuffer

The conversion from a ListBuffer to a List is O(1), as long as it
doesn't get invalidated by mutating the ListBuffer after exporting the
List (looks like we don't do that anyway).

MutableList is always O(n).
Convert Position into a value class
Convert Option[Token] to Token, ...

... by adding NoToken. Gets rid of one indirection in our hot paths.
Iterator beautification and consistency ...

... shouldn't make any difference from a performance pov, though.
Style police: Phase[ResultType] -> Phase[O]

It is recommended that type variables use a single letter, so that it
is possible to tell type variables and type instantiations apart.