[Soc2014] Official meta API

All this code for handling the legacy case seems like it largely duplicates the remainder of the function. It seems like it would be simpler to just add a check in the main function body for `no isinstance(field, ManyToManyField)` if `many_to_many` is set to `False`, rather than having this whole extra block of largely-duplicated code.