move options into a ScreenshotOptions class and add a warm_cache option