Intern several strings on message deserialization

Serialization/deserialization of messages with an object stream reset
in between messages has the side effect of completely decoupling those
object graphs. Thus elements (like strings) that were shared before,
are no longer shared when deserializing. This wastes a lot of memory
for string fields with a small universe of possible values.

This patch adds code to internalize some string fields during deserialization.
This is only done for fields for which the value would typically come from
a relatively small domain.

The particular messages touched by this patch related to the active
transfers page in webadmin and the patch thus reduces the memory footprint
of that information.

Target: trunk
Require-notes: yes
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: https://rb.dcache.org/r/7088/