[Soc2014] Official meta API

I think we need to clearly distinguish between "public API" vs "internal-only API" vs "legacy API" (which only exists for legacy reasons and may someday be deprecated). If `opts.fields` is being kept (and even used in new code) for performance reasons, then it is "internal-only API", it's not legacy: there is a continued reason for its existence.

And I am not convinced that there should be a distinction between "public API" and "internal-only API". Django users should not be second-class citizens. If the `get_field()` API is not fast enough for use in Django, what's the justification for only making the slow API public? Simple APIs are good, but if the public API we are proposing is not sufficient for Django, that's a pretty good sign that it's simply not sufficient.