Fix usage of hash function in `_.memoize`.

There is a bug in `_.memoize` where the object which is returned from the cache is always looked up using the first argument, ignoring the custom hash function if one was supplied. The fix is to use the computed `address` as the lookup key. Amazingly, the unit tests did not cover this.

I was a little confused when all I wanted to do was use the second argument of the function as the key and kept getting a return value of `undefined`.

Confirmed the regression and fix with the added unit tests.
it used to be `return hasOwnProperty.call(cache, address) ? cache[address] : cache[address] = func.apply(this arguments)`

Why was that changed?