title: Setting title as an attribute on a web component triggers maximum callstack
body: <p>I'm working on a navigation link web component. One of the properties that I want to set on the component is the title. It seems that this is somehow triggering a maximum callstack error. Should I avoid <code>title</code> at all? I could use <code>caption</code> instead.</p>
  
  <p><strong>First error</strong></p>
  
  <p><code>Class 'NavLinkCmp' incorrectly extends base class 'HTMLElement'.
    Property 'title' is private in type 'NavLinkCmp' but not in type 'HTMLElement'.</code></p>
  
  <p><strong>Second error</strong></p>
  
  <pre><code>nav-link.cmp.ts:72 Uncaught RangeError: Maximum call stack size exceeded.
      at HTMLElement.attributeChangedCallback (nav-link.cmp.ts:72)
  </code></pre>
  
  <p><strong>navigator-cmp.ts</strong></p>
  
  <pre><code>&lt;nav-link-cmp href="${link.url}" fa-icon="${link.icon}" 
      title="${link.title}" description="${link.description}"&gt;
  &lt;/nav-link-cmp&gt;
  </code></pre>
  
  <p><strong>nav-link-cmp.ts</strong></p>
  
  <pre><code>export class NavLinkCmp extends HTMLElement {
  
      // State
      private title: string;
  
      constructor() {
          super();
      }
  
      connectedCallback() {
          this.render();
      }
  
      render() {
          this.innerHTML = `
          &lt;div class="info"&gt;
              &lt;div class="title"&gt;${this.title}&lt;/div&gt;
          &lt;/div&gt;
          `;
      }
  
      static get observedAttributes() {
          return ['title'];
      }
  
      attributeChangedCallback(name: string, oldValue: string, newValue: string) {
          this.title = newValue
      }
  
  }
  
  // Component
  require('./nav-link.cmp.scss');
  window.customElements.define('nav-link-cmp', NavLinkCmp);
  </code></pre>