agent: Make it dumb.
collection: Better way to manage stuff then plain object.
ip: Make sure that plain hostname and ip are interpreted correctly.
options: If no config path passed, still use a bundled one as default.
tests: Switch mocha + chai + sinon.

Vows suck at displaying error details and do not support promises.
yeti: Cleanup. Pass tests to a connected agent internally. And let the main file output messages.
saucelabs: Encapsulate agent normalization logic inside normalizeAgent() method.
farm: Make api() method public and make it shareable. Add apiUrl() method, that will generate proper url for the specified api call.
farm: Rename resolve() to resolveAgents(). And getAvailable() to getSupportedAgents().
farm: Add new public property - agents, that will hold the list of agents to work with and a method getPendingAgent() - a way to request next waiting agent.
farm: Let the AgentFarm be EventEmitter.
farm: There can either be a password or a key, check for both before exit.
saucelabs: launchTunellier() is now public method.
saucelabs: Add private method _killTunellier().
saucelabs: Rename kill() to closeAgent() and killAll() to shutDown(). Registry for workers is now a Collection.
saucelabs: Rename connect() to requestAgents() and _connect() to _requestAgent(). And adapt to new surroundings.
farm: Add go() method that resolves the agents and requests them one by one.
Refactor a bit.
tests: Add tests for isLocal(), Agent and partly for AgentFarm.