Change enhanceApp context API
TL;DR — I propose to change enhanceContext API for clarity.

Below I listed all current public API contexts:

### createApp

```
{
  req
  res
}?
```

### entry

```
{
  req
  res
}?
```

### enhanceApp

There's actually two arguments:

```
{
  rootOptions
  entry
  ssrContext?: { req, res, entry }
  event
  getInitialDataContext
  addMiddleware
},
{ req, res, entry }?
```

### createApp response

```
{
  app
  entry
  router
  getInitialDataContextFns
  event
  dataStore
  middlewares
}
```

### getInitialData context, middleware context

```
{
  req?
  res?
  router
  route
  error
  redirect
}
```

---

I think before it's too late `enhanceApp` should be streamlined to to have 1 plain object argument:

```
{
  req?
  res?
  router
  rootOptions // should NOT have router, it will be injected at the last moment
  entry
  event
  addInitialData
  addMiddleware
}
```

I'm not sure about `addInitialData` naming, ideally it should be consistent with middleware, hence the proposal. The current naming of `getInitialDataContext` is very misleading, it's far from obvious that calling it doesn't *get* you anything.