add keyword argument support and key= keyword argument to function memoize in order to support arguments that are not directly hashable
add test for pytools.memoize