(bug 41545) Allow kbd, samp, and var to be nested.

HTML5 has various semantics that allow -- or rather require --
<kbd> and <samp> and even <var> to be nested.

eg: <kbd><kbd>Shift</kbd>+<kbd>F3</kbd></kbd>
eg: <var>x<sub><var>i</var></sub></var>, <var>y<sub><var>i</var></sub></var>

This fixes the sanitizer to permit their nesting and adds test cases to ensure that some
of HTML5's special semantics are permitted by our sanitizer and not broken.

Change-Id: I6ad64e6eb4c9b5bdc15be513f55c58f6717c3939