Class.new checks for suoerclass

Specs fixed:

Class.new
 - with a block given uses the given block as the class' body
 - with a block given creates a subclass of the given superclass
 - with a block given runs the inherited hook after yielding the block
 - raises a TypeError if passed a metaclass
Class#new
 - invokes #initialize on the new instance with the given args
 - passes the block to #initialize
Anonymous class gets it's name on assignment

Specs fixed:

Class.new
 - creates a class that can be given a name by assigning it to a constant
Anonymous nodule name

Specs fixed:

Module#name
 - is set when assigning to a constant
 - is not modified when assigning to a new constant after it has been accessed
Tagged failing spec
Merge pull request #677 from krekoten/class_new

Class#new superclass check and naming