Registers given ``Command`` (as given ``name``) at this
        *ExecutionManager*'s registry.

        :param name: name in the registry under which given ``Command``
          should be stored.
        :param Command: should be subclass of
          :class:``monolith.cli.base.BaseCommand``
        :param force: Forces registration if set to ``True`` - even if another
          command was already registered, it would be overridden and no
          execption would be raised. Defaults to ``False``.

        :raises AlreadyRegistered: If another command was already registered
          under given ``name``.

def register(self, name, Command, force=False):
        """
        Registers given ``Command`` (as given ``name``) at this
        *ExecutionManager*'s registry.

        :param name: name in the registry under which given ``Command``
          should be stored.
        :param Command: should be subclass of
          :class:``monolith.cli.base.BaseCommand``
        :param force: Forces registration if set to ``True`` - even if another
          command was already registered, it would be overridden and no
          execption would be raised. Defaults to ``False``.

        :raises AlreadyRegistered: If another command was already registered
          under given ``name``.
        """
        if not force and name in self.registry:
            raise AlreadyRegistered('Command %r is already registered' % name)
        command = Command(self.prog_name, self.stdout)
        command.manager = self
        self.registry[name] = command
        command.post_register(self)