Parser.withSource() parser

`Parser<T>.withSource()` parser applies this parser and returns its
result along with matches string.

`.token()` parser could be used instead of `.withSource()`, however
sometimes `WithSource` is more convenient, because global string
object has to be stored somewhere to resolve token into string.

Also, `WithSource` class is type-parameterized, unlike Token.