Move FieldDataCache assert to check both get and get_or_create

@cpennington a bugfix for what we talked about over HipChat.

I didn't end up adding user_id to the cache_key, b/c after rethinking I realize the FieldDataCache is meant bound to a single user.  So I just moved the assert around to make it cover the codepathes that it was previous missing.  Plus added a bunch of tests