Large refactor, split up frontend from storage backend

Also prepare for more supported storage backends. Temporarily remove request
timeouts as they weren't done properly anyway.