use the data-type attribute instead of class

Things like note, exercise, rule, list, etc are defined by the `[data-type]` attribute rather than a class name.

This has the benefit of:

- being in a format that `atc` will accept (easier to have plugins listen to `data-type`)
- the `class` attribute contains book-specific styling and there are no collisions
- `exercise`, `note`, etc also describe the structure of child HTML elements
- matches https://github.com/oreillymedia/HTMLBook/blob/master/specification.asciidoc

There should be an accompanying PR for webview to alter the CSS