def addConfig(self, name, default=None, cast=None, required=False, description=None):
        """
        Adds the given configuration option to the ConfigManager.

        Inputs: name        - The configuration name to accept.
                required    - A boolean indicating whether or not the configuration option is required or not.
                cast        - A type (or function accepting 1 argument and returning an object) to cast the input as.
                              If any error occurs during casting an InvalidConfigurationException will be raised.
                default     - The default value to assign to this configuration option.  Note that None is not a valid
                              default if required=True.
                description - A human readable description of this configuration parameter.  Will be displayed when the
                              program is run with a -h flag.
        """

        # Validate the name
        if not self.configNameRE.match(name):
            raise InvalidConfigurationException("Invalid configuration name: %s" % name)

        self.configs[self._sanitizeName(name)] = {
            'default': default,
            'cast': cast,
            'required': required,
            'description': description
        }