Corrected port logic and fixed documentation hierarchy

Currently, we cannot start a server with a pre-defined port from the factory outside of the `.run` method. This is a flaw and also partially confusing from a documentation perspective. In this PR:

- Update hierarchy in documentation h3's to h4's for methods
- Add `options.port` fallback in `FixedServer.listen`
- Update documentation to reflect `options.port` fallback

/cc @mlmorg