Make text_content more explicit about the types that it accepts.

I've had a crack at this previously - I added a check for when text_content is passed bytes instead of text. I'm still seeing ambiguous errors due to people creating content objects with the wrong type. I'd like to plug the problem in text_content, which is the most used entry point from autopilot.