Snap: A Haskell Web Framework (core interfaces and types)