Copy subelements of key definitions to key-referencing topicrefs.

Currently, when a topicref (or specialization of topicref) references a key, the subelements of the key definition are not copied to the topicref. For example, for the following map:

```xml
<map>
  <topicref keyref="thekey" platform="win" audience="all" />
  <keydef keys="thekey" platform="linux" href="someTopic.dita" navtitle="Navtitle Attribute">
    <topicmeta>
      <navtitle>Navtitle Element</navtitle>
      <linktext>Linktext Element</linktext>
    </topicmeta>
  </keydef>
</map>
```

Keyref processing produces this map:

```xml
<map>
  <topicref href="someTopic.dita" keyref="thekey" platform="linux" audience="all" navtitle="Navtitle Attribute" />
  <keydef keys="thekey" platform="linux" href="someTopic.dita" navtitle="Navtitle Attribute">
    <topicmeta>
      <navtitle>Navtitle Element</navtitle>
      <linktext>Linktext Element</linktext>
    </topicmeta>
  </keydef>
</map>
```

This is particularly problematic for `<topicmeta>` and its children as, in their abscence, later processing will fill them in with values like the `@navtitle` attribute, topic title, or `@href` attribute.

To fix this, I added some additional Stacks to keep track of whether the current topicref references a key, whether the key definition has non-topicref subelements (ie data, topicmeta), and the value of the class attribute for the current element.

I also added an additional parameter to `domToSax()` to specify whether class attribute values should be changed from map/___ to topic/___ . The current behavior is to always rename them. This is problematic when copying to topicref, as later processing expects the class attributes to be map/___ (ie map/topicmeta). I updated existing calls to domToSax() to pass true so existing behavior is maintained.