Replaced usage of "standard" Java ByteArrayOutputStream with custom implementation, because the former returns a copy of the internal byte buffer, which means additional memory allocation. Since this operation is performed intensively (used in readBandRasterData method), we don't need extra allocations.
Merge remote-tracking branch 'origin/spot5' into spot5