Allow Cors to be instantiated without HttpKernelInterface

This PR allows the `Cors` middleware to be instantiated without a `HttpKernelnterface` and adds a `setApp` method for it to be added later.

This allows instantiation outside of the context of building a stack. In our use case middleware are instantiated in factories on a DI container and put together into a stack separately; each instance doesn't know where it will be in the stack when created.

M