Handle Style basedOn

The `basedOn` property indicates that a particular style is to include properties defined by the identified style, if it exists. A style with a `basedOn` is effectively a sub class of that style.

Input styles XML

```xml
<style styleId='foo'>
  <rPr>
    <b />
  </rPr>
</style>

<style styleId='bar'>
  <basedOn val='foo'/>
  <rPr>
    <i />
   </rPr>
</style>
```

Input document XML

```xml
<p>
  <r>
    <rPr>
      <rStyle val="bar" />
    </rPr>
    <t>AAA</t>
  </r>
</p> 
```

Output HTML

```html
<p><strong><em>AAA</em></strong></p>
```

- [x] Add a test case to show that a circular dependency doesn't cause an infinite loop

References:
 * http://www.schemacentral.com/sc/ooxml/e-w_basedOn-1.html
 * ECMA 376 Section 17.7.4.3: This element specifies the style ID of the parent style from which this style inherits in the style inheritance. The style inheritance refers to a set of styles which inherit from one another to produce the resulting set of properties for a single style. The val attribute of this element specifies the styleId attribute for the parent style in the style inheritance.
this was moved to constants.py