Fixed #21832

1st commit: Updates code, tests and docs.
2nd commit: Way to create fk instance at command line.
I don't think we should include a default implementation of this. Simply refactoring:
```
while user_data[field_name] is None:
    raw_value = input(force_str('%s%s: ' % (capfirst(field.verbose_name), ' (%s.%s)' % (field.rel.to._meta.object_name, field.rel.field_name) if field.rel else '')))
    try:
        user_data[field_name] = field.clean(raw_value, None)
    except exceptions.ValidationError as e:
        self.stderr.write("Error: %s" % '; '.join(e.messages))
        user_data[field_name] = None
```
Into something like:
```
while user_data[field_name] is None:
    user_data[field_name] = self.get_input_data(...)
```
so that the method can be overridden as necessary is enough. But let's have Chris give his input before proceeding.