A more flexible, generic, reusable avatar

Background (tl;dr crowd skip to "Highlights" below):
I'm working on a project that has 6 top-level site concepts, each of which has a profile which includes a profile picture (avatar).  We have Players(Users), Teams, Tournaments, Leagues, Pickup Games, and Organizations.  We have been using a modified version of django-avatar v1.somethingoranother.  Before I went to add some new functionality (cropping support), I checked back in and saw there had been some updates.  I decide to take the opportunity to generalize our changes and hopefully get them out for everyone to use.

Highlights:
- Avatar uses contenttype framework to target any model (e.g. Team, Group, Moderator)
- Introduced a target handler abstraction to support reusability of the app "out of the box".  This is used in util, template tags, and models to abstract out things like getting storage paths, cache keys, default avatars, and few other things. util.DefaultTargetHandler should behave like the original avatar (i.e. assume an auth.User target)
- Class-based views.  I originally used the target handler abstraction in the views as well, but read about class-based views today and changed to those.  So folks can subclass AddAvatarView, ChangeAvatarView, DeleteAvatarView, and PrimaryAvatar view if they need to
- ajax support.  The views are able to do different things based on whether it's an xhr request or not.  Right now, for GET requests, the views just do the same thing.  For POSTs, if it's not ajax, it does the redirect.  If it is ajax, it returns the url of new avatar. This is probably the thing that's least generic or most just what we wanted done, but one can just override ajax_form_valid to do something different.

Thanks, it'd be great if this (or some form of it) could make it into the main repo