Changes to Pickler/Serializer/Reflection for DSS

A collection of commits which are needed for DSS. Each commit represents a new feature.

I revised the pre-/post-processing methods so the APIs I mentioned in #203 are not needed.

1. Pickler: Added PackWithReplacements. See 3c00caf for documentation.

    PackWithReplacements is a safe way to substitute all mutable objects and variables with special-designed Chunks only during serialization.

2. Serializer: Added `Serializer.extractByLabels`. Mainly to re-extract Chunks after a message is deserialized, without needing a full serializer. Again see the commit 6622e74 for example. 

3. Reflection: Extended the API to allow injecting exceptions to a thread during a reflective call (41e0978). This is irrelevant to the Pickler, but to propagate exceptions through a remote object.


In general, there is no destructor in this codebase. There are a few exceptions, but by default things do not have destructors.