[Soc2014] Official meta API

I don't think it's a hack, I think it's better. It's the difference between duck-typing ("does this field have the attributes I need?") vs type-checking ("is this field this one specific field type?"). Everything else about this PR is oriented around duck-typing fields based on their properties (which I think is great), I don't see why we should resort to effectively type-checking for GFKs only.

I'm not sure that all three of those checks are needed in all cases. "not-concrete one-to-many" or "one-to-many without related-model" would probably suffice. I'd need more study to have an idea which makes more sense, I'm not sure if either of those checks would catch any other fields that they shouldn't.