Let ChoiceField.__init__ take callable choices

The code comes from https://code.djangoproject.com/attachment/ticket/13181/with_callable_choice_iterator.diff by vanschelven.

This addresses https://code.djangoproject.com/ticket/13181.
I don't think this test is sufficient. Having the first element in the output is quite likely. I'd check for the html or at least for `John` and `Paul`