Added a general way to initialize virtual fields in models.

This made it possible to get rid of the usage of instance_pre_init in
GenericForeignKey. Performed certain other cleanups there as well.
Implemented field cloning to be used by ForeignKey.