add `dicttoolz.merge_with`

Like `dicttoolz.merge`, but applies a function to the values of a key.

From #49
add @eriknw to AUTHORS
Merge pull request #59 from eriknw/merge_with

add `dicttoolz.merge_with`
Merge pull request #60 from mrocklin/eriknw-authors

add @eriknw to AUTHORS
memoize _num_required_args
handle non-hashable args in memoize with try-except
add bench/test_curry
speed up curry.__call__ with kwargs check

benchmarking with bench/test_curry.py
Before: Ran 1 test in 0.246s
After:  Ran 1 test in 0.183s
Try calling function before validating in curry

Follows Ask foregiveness, not permission principle

benchmarking with bench/test_curry.py
Before: Ran 1 test in 0.183s
After:  Ran 1 test in 0.122s
add baseline comparison for curry with partial
clean up curry.__call__ error handling
curry invokes partial if it can

If we know that we only need one more argument then we
return a `partial` object rather than a `curry`.

This is done for performance reasons
Curry returns partial even with unsatisfied kwargs

For example the following no longer works

>>> from toolz.curried import get
>>> get(1)(default=None)(data)

But curried get *is* about 20% faster

Before: Ran 1 test in 0.085s
After:  Ran 1 test in 0.067s
Merge branch 'memoize-curry-inspect' of github.com:mrocklin/toolz into memoize-curry-inspect