Use shared PortForwardManager, and improved interface

- Improve the PortForwardManager interface.
  Deprecate the old code.
- Change PortForwardManager to be a location.
- Add PortForwardManagerLoationResolver for retrieving shared instance.
- Support configuring the starting port number for PortForwardManager.
PortForwardManager tests and fixes:

- Add tests for PortForwardManager
- Deprecate isClient()
- AcquirePort uses the first port in range as well (i.e. use
  `getAndIncrement()` rather than `incrementAndGet()`)
- Fix forgetPortMappings(Location)
PortForwardManager: incorporate review comments
PortForwardManager: incorporate review comments

- for synchronisation
This closes #353