Closes #362 - Make API data objects immutable

I think this is double check locking[1].  I think in the case it could be completely avoided w/ static code block.  This code could always assume that bytesFactory was initialized, it would not need to check.

```
static {
    bytesFactory = //init bytes factory
}
```