Better handle class names and the empty string

This actually handles two distinct problems:

 1. Elements with no class attribute at all would have a classNames Set
    that contained a single entry (the empty string); see #317

 2. Elements whose class attribute contained leading or trailing
    whitespace would have an extra classNames Set entry for the empty
    string, and a className with either a leading or trailing space
Changelog
Merge branch 'pr/469'
For HTML5 output, use a lowercase doctype
Most likely if breaker
Added some missing HTML5 tags
Treat 2xx and 3xx as OK, Location for redir

Fixes #312
Support for PUT, DELETE, PATCH
Support for W3C DOM document conversion.
w3c url test
Updated license URL
Annotations added and some cleanup.
Cleanup.
Added missing javadoc tags.
Replaced the empty expression with a better visibible one.
Null check added
(note: however,  i'm not sure if that special case may happen in reality)
Replaced the if-test with a return test.
Merge pull request #477 from offa/some_fixes

Some code improvements
Element.classNames() must not be cached
Test for Issue#478 (class names must not be cached)