Fixing lack of unicode support in RecipeForeignKey

`RecipeForeignKey()` currently checks to see if its argument is an instance of `str`, which won't work for unicode strings in Python 2. Instead we check against `six.string_types`. There is also a new regression test for unicode string arguments.

A separate commit substitutes `six.string_types` for `basestring` in `get_required_values()` for the purpose of Python 3 compatibility.