`memoize` can now accept a user key function via the `key` keyword.

Also changed default key when keywords may be present so `None` is used
instead of an empty tuple for `args` or empty frozenset for `kwargs`.
Explicitly state input/output of memoize key function.

Also, default key calculation occurs in `memof` function as an if-elif chain,
which is a little faster and is more transparent if the user inspects `memof`.
Merge pull request #149 from eriknw/memoize_key_func

`memoize` can now accept a user key function via the `key` keyword.