Move supertype into class, expose setter, fix interface implements.

* Supertypes are only applicable to classes. Additionally, expose a single-use setter for providing a value.
* Interfaces use 'extends' instead of 'implements' for their implemented types.
Merge pull request #94 from square/jw/move-supertype-into-class

Move supertype into class, expose setter, fix interface implements.