Add caching and replace `getHTML` with `innerHTML`

* Caches `tagName` and `isEditable` inside of the node
* Uses `tagName` to determine how to extract the `newVal`
* Replaces all `getHTML` instances with `innerHTML`