Separate protocol generics and operating type.
Add defrecord.
Add class and case class.

Should be renamed...
Add visibility modifiers.
Add sealed modifier to defclass.
Add val keyword for immutable declarations.
Add patterns and destructuring bind.
Add match construct.