Closes #362 - Make API data objects immutable

could initialize this statically, otherwise it may need to be synchronized.

We saw some slight performance problems that may have been caused by using reflection to allocate.  I was thinking this could be avoided w/ a factory.  Use reflect to allocate the factory (could use guava Supplier<Bytes>).  So in static initialization code, used reflection to allocate a Supplier<Bytes>.  In this method just call Supplier<Bytes>.get(), which could do the allocation of MutableBytes w/o reflection.