[Soc2014] Official meta API

Well, there are lots of things that were previously internal but are now being documented and made public in this PR. So the question is just which things should be included, right?

Are we intending to document the full set of attributes and methods that are required to make a field class that works with the Meta API? I guess `contribute_to_class` itself isn't technically required, but `contribute_to_class` sets some attributes (`model`, `name`, `attname`, others?) which are certainly required (and can't really be set via any other method than `contribute_to_class`), and calls `_meta.add_field()`, which is required (or the field will never show up in `_meta_` at all). So currently if you try to implement a field based only on what is documented (and present in `FieldFlagsMixin`) you will be missing quite a lot of required behavior.

Maybe the answer is just that we need to add documentation for a few more things (`Options.add_field()`, `Field.attname`, `Field.name`), but it remains a private implementation detail that Django fields use `contribute_to_class` to set those things? Or we could make the `contribute_to_class` API public, and move its implementation into `FieldFlagsMixin`?

What do you think?