Untagged passing specs for Module#define_method

Specs untagged:

Module#define_method passed { |a, b = 1|  } creates a method that
- raises an ArgumentError when passed zero arguments
- raises an ArgumentError when passed three arguments

Module#define_method when given an UnboundMethod
- adds the new method to the methods list

Module#define_method passed {  } creates a method that
- raises an ArgumentError when passed one argument
- raises an ArgumentError when passed two arguments

Module#define_method passed { ||  } creates a method that
- raises an ArgumentError when passed one argument
- raises an ArgumentError when passed two arguments

Module#define_method passed { |a|  } creates a method that
- raises an ArgumentError when passed zero arguments
- raises an ArgumentError when passed zero arguments and a block
- raises an ArgumentError when passed two arguments

Module#define_method passed { |a, *b|  } creates a method that
- raises an ArgumentError when passed zero arguments

Module#define_method passed { |a, b|  } creates a method that
- raises an ArgumentError when passed zero arguments
- raises an ArgumentError when passed one argument
- raises an ArgumentError when passed one argument and a block
- raises an ArgumentError when passed three arguments

Module#define_method passed { |a, b, *c|  } creates a method that
- raises an ArgumentError when passed zero arguments
- raises an ArgumentError when passed one argument
- raises an ArgumentError when passed one argument and a block
Module#define_method

Specs fixed:

Module#define_method
- raises a RuntimeError if frozen
Module#define_method

Specs fixed:

Module#define_method
- raises a TypeError when the given method is no Method/Proc
Module#define_method

Specs fixed:

Module#define_method
- returns a Proc
Tagged failing specs
Merge pull request #719 from krekoten/moduel_define_method

Module#define_method
Merge remote-tracking branch 'origin/master' into permutation2