Many improvements to `curry` based on #147 #150 #155 #159

1. Idempotent such that `curry(curry(f))` is equivalent to `curry(f)`; see #147
2. Comparable via equality and hashable based on `func`, `args`, and `keywords`; see #159
3. `func`, `args`, and `keywords` attributes are readonly
4. `__name__` and `__doc__` attributes are writable
5. More efficient implementation using `partial`; see #150
6. Curried objects never transmogrigy into `partial` objects; see #155
Add tests to get 100% coverage
oops.
Remove unnecessary tests.
Calculate hash in `__hash__` for curry, not in `__init__`.

Also, don't return `self` from `__call__`; return a new `curry` object instead.
Pickle `curried_func.__dict__` too.
Merge pull request #170 from eriknw/curry_makeover

Many improvements to `curry` based on #147 #150 #155 #159