Use data-type attribute instead of class for types of elements

Things like note, exercise, rule, list, etc are defined by the `[data-type]` attribute rather than a class name.

This has the benefit of:

- the `class` attribute contains book-specific styling and there are no collisions
- `exercise`, `note`, etc also describe the structure of child HTML elements (easier to validate)
- is in a format that `atc` will accept (easier to have plugins listen to `data-type`)
- matches https://github.com/oreillymedia/HTMLBook/blob/master/specification.asciidoc

See related https://github.com/Connexions/rhaptos.cnxmlutils/pull/47