add(componentId, actionNameToKeyMap, actionNameToHandlersMap, options) {
    if (this.containsId(componentId)) {
      return this.update(
        componentId, actionNameToKeyMap, actionNameToHandlersMap, options
      );
    }

    const componentOptions = this._build(
      componentId, actionNameToKeyMap, actionNameToHandlersMap, options
    );

    this._list.push(componentOptions);

    const newIndex = this.length - 1;
    return this._idToIndex[componentId] = newIndex;
  }
Adds a new hot key component's options, to be parsed and standardised before being
added to the list
@param {ComponentId} componentId - Id of the component the options belong to
@param {KeyMap} actionNameToKeyMap - Map of actions to key maps
@param {HandlersMap} actionNameToHandlersMap - Map of actions to handlers
@param {Object} options - Hash of options that configure how the key map is built.
@param {string} options.defaultKeyEvent - The default key event to use for any
       action that does not explicitly define one.
@returns {number} The position the component options have in the list