drop CachedPrelude

I was thinking that DetectPrelude would cause a recursive call with
either UseUserPrelude or UseCachedPrelude, but it looks like those
implementation details are going to be handled by a different structure.
towards using EvalContext instead of Config

Just like we now have a precisely-typed HawkSpec describing the
arguments to Hawk, here is a precisely-typed description of Hawk's
internal evaluation context, that is, all the parameters which we're
currently passing individually to our evaluation functions.
fix warnings
A caching library.

Still over-engineering, creating a library which I will only ever call
once :)
persisting State to disk
State version in terms of StateT version
combine two StateT
cache the EvalContext to ~/.hawk/cache/evalContext

Now the other cached values are computed and cached twice. Time to
cleanup!