Stash client

This pull request adds functionality to allow configuration to be setup in a StashClientConfig and passed around in the StashClient monad stack.