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/
You could simply check if there are enough number of bytes whenever you call `read*()` methods.  If there are not enough bytes, you can save the state and return, like you did in the catch block.  There are only 3 places that reads data from the buffer, so I think it shouldn't be that difficult.  For example:

```java
loop: for (...) {
   for (...) {
        if (in.isReadable(1)) {
            in.readBoolean();
        } else {
            break loop;
        }
   }
}
// Save state here
...
return;
```