Implemented a Bzip2Decoder

Motivation:

Bzip2Decoder provides receiving data compressed in bzip2 format.

Modifications:

Added classes:
- Bzip2Decoder
- Bzip2Constants
- Bzip2BlockDecompressor
- Bzip2HuffmanStageDecoder
- Bzip2MoveToFrontTable
- Bzip2Rand
- Crc32
- Bzip2DecoderTest

Result:

Implemented and tested new decoder which can uncompress incomming data in bzip2 format.
This implementation based on Matthew J. Francis's work:
https://code.google.com/p/jbzip2/
@normanmaurer 
Hmm... I think that in this case we can check whether the ByteBuf can read at least one byte. And so we will read next length or save state and return. Look at this:
```java
int currSelector;
// Get zero-terminated bit runs (0..62) of MTF'ed Huffman table. length = 1..6
for (currSelector = huffmanStageDecoder.currentSelector;
            currSelector < totalSelectors; currSelector++) {
    if (!in.isReadable()) {
        // Save state if end of current ByteBuf was reached
        huffmanStageDecoder.currentSelector = currSelector;
        return;
    }
    int index = 0;
    while (readBoolean(in)) {
        index++;
    }
    selectors[currSelector] = tableMtf.indexToFront(index);
}
currentState = State.RECEIVE_HUFFMAN_LENGTH;
```
WDYT?