Removed many exceptions and replaced them with aborts. The remaining exceptions will fall back to a user-implemented sprawl::throw_exception if exceptions are disabled.

For serializers, serialization errors generally abort. DEserialization errors now set an error flag, which can be checked with serializer.Error(). For mongo, it can be cleared using serializer.ClearError(). For Binary, the flag can't be cleared as there's no meaningful way of recovering.

JSONSerializer keeps its exceptions for now as it's in need of a complete rewrite using sprawl::JSONToken, but its exceptions have been changed to properly handle the case of exceptions being disabled.

For AsyncNetwork, listen() and Connect() now return booleans, and sock.GetLastError() will return a meaningful value if these return false.