title: Swift 2 protocol extension not calling overridden method correctly
body: <p>I've been running into an issue using Swift 2's protocol extensions with default implementations. The basic gist is that I've provided a default implementation of a protocol method which I am overriding in a class that implements the protocol. That protocol extension method is being called from a base class, which is then calling a method which I have overridden in a derived class. The result is that the overridden method is not being called.</p>
  
  <p>I've tried to distill the problem to the smallest possible playground which illustrates the issue below.</p>
  
  <pre><code>protocol CommonTrait: class {
      func commonBehavior() -&gt; String
  }
  
  extension CommonTrait {
      func commonBehavior() -&gt; String {
          return "from protocol extension"
      }
  }
  
  class CommonThing {
      func say() -&gt; String {
          return "override this"
      }
  }
  
  class ParentClass: CommonThing, CommonTrait {
      override func say() -&gt; String {
          return commonBehavior()
      }
  }
  
  class AnotherParentClass: CommonThing, CommonTrait {
      override func say() -&gt; String {
          return commonBehavior()
      }
  }
  
  class ChildClass: ParentClass {
      override func say() -&gt; String {
          return super.say()
          // it works if it calls `commonBehavior` here and not call `super.say()`, but I don't want to do that as there are things in the base class I don't want to have to duplicate here.
      }
      func commonBehavior() -&gt; String {
          return "from child class"
      }
  }
  
  let child = ChildClass()
  child.say() // want to see "from child class" but it's "from protocol extension”
  </code></pre>