Module#include implementation

Specs fixed:

Module#include
- calls #append_features(self) in reversed order on each module
- raises a TypeError when the argument is not a Module
- recursively includes new mixins
- detects cyclic includes
- accepts no-arguments
- returns the class it's included into
Module#append_features detects cyclic include

Specs fixed:

Module#append_features
- raises an ArgumentError on a cyclic include
Module#constants respects included modules

Specs fixed:

Module#include
- imports constants to modules and classes

Module#constants
- returns an array of Symbol names of all constants defined in
  the module and all included modules
- includes names of constants defined after a module is included
Implemented Module#include?

Specs fixed:

Module#include?
- returns true if the given module is included by self or one of it's ancestors
- returns false if given module is equal to self
- raises a TypeError when no module was given
Make RPython happy
Fixed failing test

In ruby only modules can be included
Split test case
Use reversed instead of countdown xrange
Module#remove_method

Specs fixed:

Module#remove_method
- removes the method from a class
- removes method from subclass, but not parent
- raises RuntimeError when frozen
Implemented Module#method_removed

Specs fixed:

Module#method_removed
- returns nil in the default implementation
- is called when a method is removed from self
Do not build temporary lists
BasicObject#singleton_method_removed

Specs fixed:

BasicObject#singleton_method_removed
- is called when a method is removed on self
Make RPython happy
BasicObject#singleton_method_removed
DRY
Merge branch 'master' into module_include

Conflicts:
	topaz/objects/moduleobject.py
Merge pull request #672 from krekoten/module_remove_method

Module#remove_method and hooks
Merge pull request #668 from krekoten/module_include

Module#include, Module#include? and Module#constants