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.
Yes. It was imported once by the tests, which I fixed.