Switch to using a GenericForeignKey.

This is so we can insert things in places they shouldn't go.
Add an 'Inbetweener' example of inserting an inbetween model
Rename 'has_child' to 'get_by_child'
Add errors for failing to have correct relationships with your children
Some cleanup

Rename "child" to "superclass" and "parent" to
"subclass" to clarify differences between Inheriting and Descending
classes.
Add a direct relationship from Upload to UploadGroup which automatically updates
Merge pull request #25 from wafflesfm/feature/torrent-model-rethink

Switch to using a GenericForeignKey