code: function hasImplemented(classDefinition, protocol) {
  	doImplement(classDefinition, protocol);
  	assertHasImplemented(classDefinition, protocol);
  
  	return classDefinition;
  }
docs: Declares that the provided class implements the provided protocol.
  
  <p>This involves checking that it does in fact implement the protocol and updating an internal list of
  interfaces attached to the class definition.</p>
  
  <p>It should be called after implementations are provided, i.e. at the end of the class definition.</p>
  
  @throws Error if there are any attributes on the protocol that are not matched on the class definition.
  
  @memberOf topiarist
  @param {function} classDefinition A constructor that should create objects matching the protocol.
  @param {function} protocol A constructor representing an interface that the class should implement.