Adding cache to SubjectField.

I would love to hear your comment on this, because I'm not at all sure this is the best way to do this. It sure is the easiest way to do it.

Caching on SubjectField is needed (due to the other changes) because if not, then it will cause a check if the SubjectField exists every time someone creates a new Person and sets custom fields. However, they rarely change.