[Backport] Start server thread in new TestWebServer.start() method rather than constructor

Original commit message:
  BUG=413790

  Review URL: https://codereview.chromium.org/568873002

  Cr-Commit-Position: refs/heads/master@{#297753}

Required for the follow-up commit, which is necessary for fixing some
CORS Crosswalk tests after moving to M39.

BUG=XWALK-2755
[Backport] Allow forcing TestWebServer to use a specific port number.

Original commit message:

  Commit c4a3f88c4434e86057a8c7ae4e109b8be4138d8f ("TestWebServer needs to
  use a free port") has caused TestWebServer to use a random port number
  in each invocation.

  This does not play well with tests that assume the server will be
  running on a specific port (for example, an HTML asset trying to do XHR
  whose contents cannot be changed at runtime).

  start() and startSsl() can now be passed an optional port number; if it
  is being used, the server will fail to start like it did before the
  commit mentioned above.

  R=hush@chromium.org, yfriedman@chromium.org

  Review URL: https://codereview.chromium.org/666513002

  Cr-Commit-Position: refs/heads/master@{#300151}

This is required for org.xwalk.runtime.client.test.CrossOriginXhrTest
and org.xwalk.runtime.client.embedded.test.CrossOriginXhrTest to work
again in Crosswalk after moving to M39, as those tests require
TestWebServer to be running on a specific port.

BUG=XWALK-2755
Merge pull request #198 from rakuco/backport-testwebserver-commits

Backport some TestWebServer commits from upstream.