Some networking bugfixes to handle socket errors.
See description

-Fixed a bug in MongoReplicable when serializing nested arrays
-Made JSONSerializer capable of reading and writing pretty-printed JSON
-Added JSONToken class in JSONSerializer to enable arbitrary JSON
parsing
-Apparently size_t is signed in 64 bit. Or int is unsigned. Because
that's the only explanation for windows complaining about signed vs
unsigned mismatch only when building 32 bit. I don't know.
-Fix visual studio compile warning when serializing
std::map<std::string, T>
-Fix for MongoReplicable's generateUpdateQuery() failing on empty
vectors and maps
-Fix for MongoReplicable's generateUpdateQuery() not generating correct
indices for multi-dimensional arrays
-Several fixes for the way update queries are generated in mongo, come
with some known performance issues that I'll be working on today, but it
works correctly now (for every test case I was able to put it through)
-Improved performance of base serialization for Replicable. Some
additional performance improvements to come there.
-Improved performance of MongoReplicable's generateUpdateQuery()
-Added reverse delta options (rdiff() and generateUndoQuery())