feat(Parser): implement Parser

Add a simple parser implementation that supports only field reads.

@vicb @chirayuk @mhevery could one of you guys take a look?

WIP
I think using just `Scanner` makes it hard to look ahead (to peek). This is because `Scanner` mutates a bunch of instance variables when reading a token. So you cannot read a bunch of tokens, and then "unread" them. We can add a buffer to `Scanner`, where we will store the current and next characters. But this will make it more complicated.