Add support for web components

*I've changed this PR text to match the latest version.*

This commit introduces a new hydration hook that allows HTMLBars to integrate
with web components. The hooks has the signature

     WEB_COMPONENT(placeholder, tagName, context, options, helpers)

and is generated along with a placeholder whenever the compiler encounters an
HTML element with a hyphenated tag.

Compiler changes:

- a new ComponentNode which is a mix of ElementNode and BlockNode. It has the
  signature `ComponentNode(tag, attributes, program)`.

- a new hydration opcode `component` similar to the `helper` opcode.