Refactor tests for compression codecs

Motivation:

Too many duplicated code of tests for different compression codecs.

Modifications:

- Added abstract classes `AbstractDecoderTest` and `AbstractEncoderTest` which contains common tests for any compression codec.
- Removed common tests which are implemented in `AbstractDecoderTest` and `AbstractEncoderTest` from current tests for compression codecs.
- Implemented abstract methods of `AbstractDecoderTest` and `AbstractEncoderTest` in current tests for compression codecs.
- Added additional checks for current tests.
- Renamed abstract class `IntegrationTest` to `AbstractIntegrationTest`.

Result:

Removed duplicated code of tests for compression codecs and simplified an addition of tests for new compression codecs.
@trustin Are you sure that `@RunWith(Parameterized.class)` is a good idea? It will create several instances of each class and run all test even if they won't use parametrized fields (for example, `Bzip2DecoderTest.testUnexpectedStreamIdentifier()`).

@normanmaurer How can I emulate a batched flow of data with direct `ByteBuf`? I can't find a way without too many copies of data.

@trustin @normanmaurer We may use `@RunWith(Theories.class)` and run only `testDecompressionOfLargeChunkOfData()` with heap and direct `ByteBuf`s. I think that it would be enough.