Speed up for DataSerializable deserialization

This is done by adding a constructor cache, so that the constructor is not retrieved
using reflection for every call, but only the first time. On my macbook air I went
from 600k deserialization/second to 3M deserializations/second; so roughly 400%
performance improvement.

Also the serialized String content of the classname is cached because this also takes
quite a lot of time.