Argcache cleanup

Clean up various things in the cache framework.

* Reorganize code; most notably, move `cache_function` from argcache.py to function.py.
* Clean up arg-processing code to use Python 2.7's `inspect.getcallargs` instead of a custom `normalize_args` function.
 * To-do: support *args and **kwargs?
* Remove the concept of ArgCache "uid"; stop checking for duplicate ArgCaches (which used to be a concern with older versions of Django importing everything twice, but not anymore)
  * To-do: determine whether the cache registry can be gotten rid of or simplified.
* Miscellaneous other code removal/deduplication.
FTSOTR: we talked in person; it looks like the thing is that self is rarely passed as a kwarg, and that doesn't break this use case.  It's still probably better to pass them as `args`/`kwargs` just in case, though.