Improve Bzip2BitReader/Writer

Motivation:

Before this changes Bzip2BitReader and Bzip2BitWriter accessed to ByteBuf byte by byte. So tests for Bzip2 compression codec takes a lot of time if we ran them with paranoid level of resource leak detection. For more information see comments to #2681 and #2689.

Modifications:

- Increased size of bit buffers from 8 to 64 bits.
- Improved reading and writing operations.
- Save link to incoming ByteBuf inside Bzip2BitReader.
- Added methods to check possible readable bits and bytes in Bzip2BitReader.
- Updated Bzip2 classes to use new API of Bzip2BitReader.
- Added new constants to Bzip2Constants.

Result:

Increased size of bit buffers and improved performance of Bzip2 compression codec (for general work by 13% and for tests with paranoid level of resource leak detection by 55%).
Added private key decryption to JDK SSL server context.

Motivation:

Currently it is not possible to load an encrypted private key when
creating a JDK based SSL server context, see
https://github.com/netty/netty/issues/2718

Modifications:

Added io.netty.handler.ssl.util.KeySpecGenerator which creates which
handles key spec generation for (encrypted) private keys.

Modified io.netty.handler.ssl.JdkSslServerContext so it uses
KeySpecGenerator.

Added tests for creating a SSL server context based on a (encrypted)
private key.

Result:

It is now possible to create a JDK based SSL server context with an
encrypted (password protected) private key.
Motivation:

Address comments on netty#2725.

Modifications:

Removed `io.netty.handler.ssl.util.KeySpecGenerator` and merged its sole
method into `io.netty.handler.ssl.JdkSslServerContext`.

Result:

One class less.