Improve server state management

This commit improves server state management by not relying on a single boolean anymore.
`ServerManager` is now using an internal `_STATES` object, which contains all possible
(`CRASHED`, `IDLE`, `LAUNCHING`, `RUNNING`)  states.

Reasons for this change:
In order to implement meaningful state change events and to provide better UI feedback,
a single boolean value for checking if the server is currently running is not enough.