Introduce support for matchers:

This pull introduces support for matchers in both expectation creation and history digging functions.

Here is an example how an expectation can be created using matchers:
```Erlang
%% When
meck:expect(Mod, f, [{[1, meck:is(fun(X) -> X == 1 end)],           a},
                     {[1, meck:is(hamcrest_matchers:less_than(3))], b},
                     {['_', '_'],                                   c}]),
%% Then
?assertEqual(a, Mod:f(1, 1)),
?assertEqual(b, Mod:f(1, 2)),
?assertEqual(c, Mod:f(2, 2)).
```
Here is an example how can be checked if a function has been called during test using matchers:
```Erlang
?assertMatch(true, meck:called(Mod, test, ['_', meck:is(hamcrest_matchers:equal_to(2)), {'_', 3}, "four"]))
```
As you can see <code>meck:is/1</code> can create a matcher from any single argument function or a hamcrest matcher. Matchers can be used instead of any expected argument.