All errors, warnings, and messages are now listed in a sum type
in 'CAStore.Type.Text'. The added structure should help with
writing better error messages. Also, if and when we get to
localising ca-store, implementation will be trivial.
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.