Implement SASL stuffz

- Implements Kerberos authentication over SASL
- PLAIN over SASL
- Changing principle name (literally called PLACEHOLDER now)

No clue how we can test this as it requires external mongodb server, and kerberos ticket before running the test.

A bonus fix is also included in this PR to not conflict:
- Authenticate before calling isMaster()