Major API change to use context.Context instead of *web.C

The options middleware is currently broken (must be rewritten another way) but it looks like everything else should work fine
Make sure to only allocate a context with valid methods if necessary