Start of fetch module

I might tack on more stuff to this PR if review takes long :)

After this point I mainly have to copy-paste from cors.rs.
Locally I have a half-working copy paste, but I'll need to clean it up first.