The prompt_choices function now returns a correct result.

The prompt_choices function would try to call string.ascii_lowercase(rv) where
rv is a string.
This would raise an error because ascii_lowercase is not a function. Assuming
that the intended result is a lowercase version of the string, this has been
changed to use rv.lower()

Also the check::
        if isinstance(string, basestring):
has been changed to::
        if type(string) is str:

because basestring is not defined in python3.