Adding cache to SubjectField.

Refactoring from https://github.com/tapajos/highrise/pull/64

I've changed the cache option to be opt-in, and did a little refactoring on the spec to split cached/non-cached contexts.