The commit adds a from_reader and to_writer method implementation to
make it easier to work with IO streams.
Additionally, I have deprecated the `new` and `to_xml` functions in
favor of functions that match the naming scheme of serde crates more
closely: `from_str` and `to_string`.
* feat(api)!: add distinct error type
The commit adds an `Error` enum to the public API of the opml crate to
make it easier to reason about what went wrong during OPML
parsing/writing.
* A way of easily constructing OPMLs
* An example of how to do construct in the getting started documentation
* Make outline booleans optional so there's no unnecessary XML output
* Defaults for all structs
* Various helper methods for adding feeds and getting the XML output
* Tests for construction