1. Enable database access
2. Load settings
3. Load extensions
4. Load Flarum core/etc
This way, when the app boots, extensions get to register event
listeners for events that may be fired during core/etc's boot process.
And let them know what kind of request this is via a “type” binding on
the container. Not sure if there is a better way to do this. But they
need to know somehow, so extenders can act selectively (e.g. the
ForumClient extender should only act on forum requests, not on API or
admin requests)