ES6 classes.

I've been meaning to learn about Pratt parsers, so this was a good excuse (#1024). Much of the heavy lifting was done by reusing the object literal code (slightly modified). I'm not good at writing tests, so thanks to rwldrn for providing the source material. Wait, did I do anything at all? Unfortunately, my secretary was out, so I had to do the typing myself.

I added some of the static semantic checks, but to be honest, I don't understand most of what the spec is saying, so I'm almost certain that I misinterpreted the part where it says:

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-13.5

> It is a Syntax Error if BoundNames of BindingIdentifier contains either ″eval″ or ″arguments″

I mean, how can a `BindingIdentifier` "contain" anything?

----

I'm almost certainly missing some important static semantic checks. I'm hoping someone better versed in the spec can spot the holes.

I followed the grammar pretty much verbatim, so hopefully everything that should parse correctly, does. And vice versa.