Prefer to use app ports if available in an offer

Marathon currently selects random ports from the range offered by Mesos when launching a task. This PR first tries to select the app ports configured by the users, then falls back to random.

A future change could be to optionally reject an offer if the configured app ports are not available.
True, but I'm checking for that with `!portMatcher.matches` above. The method should be rewritten to avoid this awkwardness but that's beyond the scope of this PR.