Fixed PHP-375: GridFS segfaults when there are more chunks than expected

We cannot blindly trust the size receieved from the files collection.
We need to track the data we are actually reading and copying into
memory so we don't try to stuff to much data in - invalid data even.
Fixed CS, picked and documented the exception code and rephrased the exception message.
Merged pull request #263
Refactor setReadPreference so that we don't have to reimplement this 4 times.
Fixed PHP 483: Implemented MongoCursor::setReadPreference/getReadPreference
Merged pull request #264
[PHP-627] Allow single pipeline operator arg in MongoCollection::aggregate()
Merged pull request #265
Fixed the reflection test after introducing two new methods on MongoCursor.
Merged pull request #266
Fixed MongoDate serialisation and deserialisation with negative timestamps.

Apparently MongoDB uses the Euclidean modulo operator instead of C's truncated
modulo operator. This is difficult to test automatically, as calling out to the
mongo shell is impractical.
Merged pull request #268
Fixed the MongoGridFSFile::write() method after an earlier broken fix.
Merged pull request #267