Adds support for arbitrary image timeout periods

This diff should be pretty straightforward. If an image doesn't load in 5000ms (customizable), `Offline.markDown()` is called.