Implement Module#<=

Specs fixed:

Module#<=
- returns true if self is a subclass of, the same as or includes the given module
- returns nil if self is not related to the given module
- returns false if self is a superclass of or is included by the given module
- raises a TypeError if the argument is not a class/module
Implement Module#<

Specs fixed:

Module#<
- returns true if self is a subclass of or includes the given module
- returns false if self is the same as the given module
- returns nil if self is not related to the given module
- raises a TypeError if the argument is not a class/module
Implement Module#>=

Specs fixed:

Module#>=
- returns true if self is a superclass of, the same as or included by given module
- returns nil if self is not related to the given module
- returns false if self is a subclass of or includes the given module
- raises a TypeError if the argument is not a class/module
Implement Module#>

Specs fixed:

Module#>
- returns true if self is a superclass of or included by the given module
- returns false if self is the same as the given module
- returns nil if self is not related to the given module
- raises a TypeError if the argument is not a class/module
Implement Module#<=>

Specs fixed:

Module#<=>
- returns -1 if self is a subclass of or includes the given module
- returns 0 if self is the same as the given module
- returns +1 if self is a superclas of or included by the given module
- returns nil if self and the given module are not related
- returns nil if the argument is not a class/module
Merge pull request #669 from krekoten/module_comparison

Module comparison methods