Performance improvements for crumb support

* Use proper exceptions and error messages when using crumbs
* Improve performance by storing the crumb in a hash instead of fetching it for every POST request - refetch if it expires