Refactor the auth to make it connection wise

### Problem
login/logout were per node, as we have a connection pool, we can have multiple connections per node, which will break login/logout as the connections rotate depending the order of checkout/checkin

### Solution
We need to make auth methods connection wise, so we can authenticate a specific connection after getting it from the pool, and before sending any command thought it.

[fixes #212]
[related mongoid/mongoid#3382]

@durran need your feedback on this one.
(all tests should be green, including the MongoHQ ones)