-Upstream no longer assumes that it's the last middleware in the chain

-Can define a global ContextFactory. A ContextFactory creates a domain-specific
context from a base gc.Context. When you mix this with a Dispatcher, you get
clean and domain-aware controllers:

func contextFactory(base gc.Context) (gc.Context, gc.Response) {
  context := &Context{Context: base}
  context.Tenant = TenantLookup[context.Query()["tenant"]]
  return context, nil
}

func dispatcher(action interface{}, context gc.Context) gc.Response {
  return action.(func(*Context)garnish.Response)(context.(*Context))
}