Module#method_added

Specs fixed:

Module#method_added
- returns nil in the default implementation
- is called when a new method is defined in self
BasicObject#singleton_method_added

Specs fixed:

BasicObject#singleton_method_added
- is called when a method is defined on self
- is called when a method is defined in the singleton class
- is called when define_method is used in the singleton class
Module#method_undefined

Specs fixed:

Module#method_undefined
- returns nil in the default implementation
- is called when a method is undefined from self
BasicObject#singleton_method_undefined

Specs fixed:

BasicObject#singleton_method_undefined
- is called when a method is removed on self
Tagged failing specs

This specs will be failing untill method visibility is implemented.
Do not forget to copy attached instance too
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
Merge pull request #674 from krekoten/module_method_hooks

Module method_* hooks