Closes #362 - Make API data objects immutable

If we kept the idea of offset around, then this could be created w/o copying by pointing into byte array.  This is safe because byte array is immutable.  This is what java String does I think.