Fix request limit

This doesn't actually fix the request limit, but it does use `hyperquest` instead of `request`, which should help a tiny bit with speed. It also adds a small LRU cache for page resources, so when we have 1,000 requests for the same thing we fetch it once and then spit it back out with almost no latency afterward.

We still need to look into why these requests end up taking longer and longer, even on a powerful home computer.

This branch also separates log messages into a separate class.