title: How to extend a protocol in Swift
body: <p>In Swift, how do we define a protocol that extends or specializes a base protocol? The documentation does not seem to make this clear. </p>
  
  <p>Also unclear, do Swift protocols conform to/extend the NSObject protocol? This is an interesting question as it would hint at whether Swift uses vtable- or message-based dispatch for calling protocol methods. </p>