Add clean_document() and clean_document!() methods

These new methods will allow users to parse entire documents, without the DocumentFragment parser removing document-level tags (html, head, body, etc).

__Problem:__
* We need to validate the HTML string as if it were an entire document, not just a fragment
* The fragement parser strips html, head, body, etc. tags even if they are included in the whitelist

__Changes in this pull request:__
* Add clean_document(), clean_document!() instance and class methods
* Changed clean!() to take an optional argument that specifies the parser to use. This leaves the existing functionality unchanged, while allowing clean_document() to pass in the alternative parser
* Updated Usage section in the README
* Tests to cover new functionality