Instead of applying a `#[serde(rename = "foo")]` or `#[strum(serialize =
"foo")]` to each field of a struct or variants of an enum, apply the
appropriate `#[serde(rename_all = "style")]` or `#[strum(serialize_all =
"style")]` to the struct/enum.
In addition, in the places where the `lowercase` style is used and all
the fields/variants are a single word, replace that with `snake_case`,
since that seems to be the default everywhere with multi-word
fields/variants.
Replace the impl_enum! macro, which automatically derives instances of
std::fmt::Display and std::string::FromStr, with derive macros from the
strum crate (Display and EnumString resp.).
Closes#90.
To-device events are received in a sync response in a separate field of
the response.
They are sent between dirrectly without involving a room and are not
permanently stored on the serever. They are mostly used to set up
encryption between devices.
This patch implements a enum which encapsulates many of the messages
that will appear in the to-device part of a sync response.