Fixed PHP-665: Add support for Auth Specification

Implemented support for surrogate users, defined in a seperate database
then currently using.

Also fixed a memory leak when switching between databases with
credentials.

Added support for the authSource connection string option, as well as
future compatability support for authMechanism.
Fixed CS and tweaked error messages a bit.
Merged pull request #319
Fix PHP-686: Constant reconnect attempts to a server that is down

This is because on every single 'new MongoClient' we would do a full
topology discovery and attempt to connect to every single server we
could find - even though we were previously fully aware of the fact the
server was down.
This may have seemed like a good idea, we would quickly discover when
a server became available again..

However, if the machine is completely off we have to wait until the
connect() times out. Again. And Again. And Again, on every 'new
MongoClient'.
In practice that means all requests coming into the application will
have to wait 1second (default) times down servers, which ofcourse is
unacceptable.
PHP-686: Fixed CS & info message per PR#317 review
Fixed PHP-686: Don't connect to server that is down

Made the blacklisting into a linked list that maintains the "last_ping"
so we know when we should attempt to reconnect to it.
The linked list is implemented by extending mongo_con_manager_item
and its helpers to be more generic
Removed unused variable.
Fixed CS issues.
Removed global declaration, and include the correct include file.
Make mongo_blacklist_destroy static.
Documentation, and changing variable names to make more sense.
Fixed test cases.
Missed a test case for fixing.
Merged pull request #317
First draft for using PHP Streams for IO, hardcoded SSL support
Always call the IO hooks & added connect & close hooks
Rename the PHP streams out of mcon/ and only enable them with --enable-streams
Add timeout support to the streams, and parse the 'ssl' option to
MongoClient which is only available when compiled against the streams
layer
Bail out when we can't read the ismaster response
Fix a total meltdown when all the servers are above the ping time threshold