Classes: Prevent single-letter class names.

'class A() {...}' would really confuse generics.
Classes: Declaration must be at toplevel or within another class.

Conditional classes are silly, so don't allow that sort of thing.
Classes: Class nesting now works properly (the inner class goes out of scope).

This is exactly how functions work: When a function inside another function
is declared, the inner function is no longer visible when the outer function
closes.
Classes: First pass at combining generic constructors and classes.

Creating a generic class is pretty simple:
    class Point[A](A value) { A @value = value }

With this patch, the interpreter now recognizes that Point contains other
elements, and that 'Point[integer]' is a valid class identifier. Point::new
in this case works, but the constructed instance is very confused about the
types it has (because they're all wrong).

Generic classes still don't technically work, but this is a step toward the
right direction.
Classes: Generic access of class properties now works. Yay!

With this commit, it is now possible to do...
    class Point[A](A value) { integer @value = value }

...and then...

    Point[integer] p = Point::new(1)
    p.value = 11
    show (p)

    Point[string] s = Point::new("1")
    s.value = "asdf"
    show (s)

And the results work as expected. This is very, very nice (and it didn't take
that much work either!) There's not much more left to classes now that I can
think of off the top of my head (save inheritance).