`string_types` evaluates to `(unicode, str)` in python 2 and `(str, bytes)` in python 3.  I'm not sure how to write the types out that is compatible with both.

The original check for str in python 2 didn't work for this particular content because we got back unicode sometimes (I'm not sure when).  So we try to do `etree.tostring(node)` on a unicode string and got back `TypeError: Type 'lxml.etree._ElementUnicodeResult' cannot be
serialized.`

I've never seen this error before with my test data, but it's definitely not working with the test data I added in this PR.