ca-store is planned to work as follows:
1) A monad (currently IO) will generate the configuration, read the command
line, parse the config files, and create the environment the program
should run in.
2) This environment will be passed to the main monad (currently Program)
to do the work.
Currently everything will be directly coded with little to no abstraction.
Once ca-store is up and running, we will begin regaining purity by pulling
major features into small testable units.