Support <video poster=...>

This commit cherry-picks the patch on html5lib's issue tracker:

  http://code.google.com/p/html5lib/issues/detail?id=205
Support <video preload=...>, <audio preload=...>

This commit cherry-picks the patch on html5lib's issue tracker:

  http://code.google.com/p/html5lib/issues/detail?id=206
feedparser: <video preload poster>, <audio preload>

* planet/vendor/feedparser.py: Add preload and parser to the set of
  acceptable attributes.

This is http://code.google.com/p/feedparser/issues/detail?id=356.
Modified feed parser and html5lib to allow data- HTML5 attributes through because they have no meaning to a browser or SGML parser and may contain meta-data or other attributes that scripts added to the planet page may require.
add <source> element to <item>

The RSS spec specifies a <source> member of <item> for aggregators to
indicate another feed from which the item originated.
Handle varieties of empty <georss:point> element

Empty point defined as <georss:point> </georss:point> with single space only
leads to index out of range on the coordinates access.
Avoid "RuntimeError: Settings already configured."
Adjust to an evolutions of html5lib
Adjust to removal of XHTMLSerializer from html5lib and fix and workaround for https://code.google.com/p/html5lib/issues/detail?id=210 https://code.google.com/p/html5lib/issues/detail?id=210

The sanitizer filter seems to be buggy (see also https://github.com/html5lib/html5lib-python/issues/72) so we rely on the sanitizing tokenizer instead
Try a fix for "AttributeError: object has no attribute 'summary_detail'"
Use a user-agent other than the httplib2 default.

There is something about the default httplib2 user-agent that causes some web
servers to throw up.

Try this, for example::

    >>> import httplib2
    >>> h = httplib2.Http()
    >>> response, content = h.request(
    ...   "http://ankursinha.in/blog/feed/")
    >>> response.status
    406
    >>> response, content = h.request(
    ...   "http://ankursinha.in/blog/feed/",
    ...   headers={'user-agent': 'trololololololol 9000'})
    >>> response.status
    200