OpenPGP: Detect and support Gnuk Token.

http://www.fsij.org/gnuk/
OpenPGP: Add Gnuk in pkcs15 emulation layer.
OpenPGP: Include private DO to filesystem at driver initialization.

In old implementation, the DOs which their access is restricted by
PIN (like DOs 0101 -> 0104) were excluded from the fake filesystem,
leading to that we cannot read their data later, even if we verified PIN.
PKCS15-OpenPGP: Declare DATA objects.

Begin to support read/write DATA object for PKCS-OpenPGP binding.
This object is used by TrueCrypt.
OpenPGP: Support erasing (reset) card.

Command: openpgp-tool --erase
openpgp-tool: Support deleting key in Gnuk.
OpenPGP: Correct building Extended Header List when importing keys.
OpenPGP: Read some empty DOs from Gnuk.

In Gnuk, some empty DOs are returned as not exist, instead of existing with empty value.
So, we will consider them exist in driver.
PKCS15-OpenPGP: Do not show empty DO in pkcs15 emu_init.
PKCS15-OpenPGP: Allow to store data to pkcs15 data object.

Only one DO is supported now.
OpenPGP: Provide enough buffer to read pubkey from Gnuk.
OpenPGP: Support write certificate for Gnuk.
pkcs15-openpgp: Change to sc_put_data instead of sc_update_binary when writing certificate.
OpenPGP: Overcome the restriction of even data length of Gnuk.

When write certificate with odd length to Gnuk, we add zero padding to make it even.
OpenPGP: Delete key as file, for Gnuk.
OpenPGP: Correct parameter checking.
OpenPGP: Make code neater
Move declaration to top of block.
Merge remote-tracking branch 'github-hongquan/gnuk'