Store agent versions as numbers.

Helps in matching against the registry of supported agents.
saucelabs: Return a promise directly, in getAvailable().
browserstack: Consider API error as a reason for promise rejection.