Extract links from XHTML documents with MIME-Type "application/xml"

"application/xhtml+xml" is already interpreted as HTML
and link extractor is fine with it to extract links.

Only for XML documents can the namespaces in tags be an issue.

Fixes #780

Do both tag and attribute tests in _iter_links() method
Added referer to "Spider error processing" log message + fixed some pep8 issues
Add PyPI Pin for Wheels compatibility
Merge pull request #791 from redapple/xhtmllinks

Extract links from XHTML documents with MIME-Type "application/xml"
Merge pull request #796 from redapple/patch-1

Add PyPI Pin for Wheels compatibility
PY3: use six.moves.cPickle
Merge pull request #797 from felixonmars/py3-port

PY3: use six.moves.cPickle
PY3: fix has_key and use six.moves.configparser
Merge pull request #798 from felixonmars/py3-port

PY3: fix has_key and use six.moves.configparser
PY3: use six.iterkeys, six.iteritems, and tempfile
Merge pull request #799 from felixonmars/py3-port

PY3: use six.iterkeys, six.iteritems, and tempfile
TST clean temporary file explicitly
PY3: use six for robotparser and urlparse
Merge pull request #800 from felixonmars/py3-port

PY3: use six for robotparser and urlparse
PY3: fix xmlrpclib and email imports
use six.moves version for MIMEMultipart, MIMEText, and MIMEBase
Merge pull request #801 from felixonmars/py3-port

PY3: fix xmlrpclib and email imports
PY3: use six.BytesIO and six.moves.cStringIO
use .seek(0) instead of reset() for compatibility

Since I don't find docs for the .reset() method, I lookup up the source
code, and it should work just the same as .seek(0).

For reference:
https://github.com/python/cpython/blob/8eeb7e9122109f5cc71c22047d5cdd312ca770a0/Modules/cStringIO.c#L281
use io.BytesIO and cStringIO instead of six.BytesIO as suggested