Add caching and switch to docker based builds