# Functions
Load will load confiration file, and initialize a default configuration if no configuration is present.
RegisterOptions takes in the name of the command and an map of OptionDefinition objects.
Save will save configuration.
Setup is to be called from main this was originally the init() function but we want to make sure all other packages have been initialized before calling them, which Load() does.
# Variables
Configuration contains the current configuration values.
Credentials is the client credentials, if present.
OptionsDefinitions is a map of all the OptionDefinitions, by command.
# Structs
A OptionDefinition is something with a default value and a validator.