Add Mock.with() (wip).  Also clean up tests a bit.
Rename .with() to .args(); implement some .args() tests.
.check() returns mock instance.

Not sure of the value of having .check() return the instance
though, but it is consistent with .expects() and .args().
First check of arguments usage.
Implemented two more tests.
.check() will no complain if there are no expectations.
Adjust .check() to account for .args().
Clean up tests left over before .args() was added.
Implement .returns(); clean up tests.
Remove dead code, simplify Signature class.
Simplify loop, rename variable, reduce mocks created by mock().
Add 'args' and 'returns' as reserved words that cannot be expects'd.
Refactor: extract exception messages into their own methods.
Various refactorings.
Extract method _check_for_duplicate_signature
Extract method _check_for_uncalled_signatures
Extract method _define_expected_method
Extract method _find_signature
Eliminate @current_method_name
Replace hash of arrays of signatures with array of signatures.

This simplifies the code.  Searching for a method signature is
now a linear brute force search but the number of signatures in
each test is going to be small so the hash did not buy anything.