Previously we used UINT16_MAX to mean no port/no specifc
port. This leads to confusion because 65535 is a valid
port number.
Instead use an optional. If you want a specific port call
LaunchGDBServer as normal, otherwise pass an empty optional
and it will be set to the port that gets chosen.
(or left empty in the case where we fail to find a port)
I know this is a bit unorthodox but things got messy trying to pass an Optional into StartDebugServerProcess. So I figured it's better to keep StartDebugServerProcess the same for now and limit the scope of any mistakes. (the logic gets quite hard to follow)