Bugs
----
* I think whitespace may not be processed correctly.
* html5lib doesn't support SoupStrainers, which is OK, but there
should be a warning about it.
Big features
------------
* Add namespace support.
* soup.new_tag(" ") should create an empty-element tag if the soup
was created with an HTML-aware builder, but not otherwise. This
requires keeping around information about the builder.
Optimizations
-------------
markup_attr_map can be optimized since it's always a map now.
BS3 features not yet ported
---------------------------
* In BS3, "soup.aTag" is the same as 'soup.find("a")'. This lets you
locate a tag called (let's say) "find" with attribute
access. "soup.find" won't do what you want, but "soup.findTag" will.
This still works In BS4 but it's deprecated. I could make
"soup.find_tag" work the same way as "soup.find('find')", but I don't
think it's worth it.
CDATA
-----
The elementtree XMLParser has a strip_cdata argument that, when set to
False, should allow Beautiful Soup to preserve CDATA sections instead
of treating them as text. Except it doesn't. (This argument is also
present for HTMLParser, and also does nothing there.)
Currently, htm5lib converts CDATA sections into comments. An
as-yet-unreleased version of html5lib changes the parser's handling of
CDATA sections to allow CDATA sections in tags like