Refined the concept of virtual fields.

This commit breaks GenericRelation. For now they don't cascade deletes and
attempting to create a database join on a GenericRelation throws an
exception.