Update results

Attempted to align the inputs and outputs of the `ramrod._BaseUpdater` implementation public methods.
* `clean()`, `update()`, and `check_update()` all accept filenames, file-like objects, `etree._Element` instances, and/or `etree._ElementTree` instances.
* `clean()` and `update()` to return `ramrod.UpdateResults` objects
* `update()` and `clean()` work off of copies of the input document, if an `etree._Element` or `etree._ElementTree` instance is passed in.
  * Update operations act upon the copy and not the input document.

Added stub "clean" methods to ``_BaseUpdater`` which **must** be implemented on derived classes because public `_BaseUpdater.clean()` invokes these methods via protected `_BaseUpdater._clean()` method. There is already a ``_BaseUpdater._get_duplicates()`` method.
* ``_get_disallowed()``
* ``_clean_disallowed()``
* ``_clean_duplicates()``

Lots of docstring updates!