security: Split KeyChain into signing (KeyChain) and verification (Verifier) interfaces

This split removes the need for IdentityManager.

Also in this commit: Make verifySignature methods a set of static methods of Verifier.

Change-Id: Iea1c4353857a21417b2dcd1f91ba7013995d1459
security: Changing Verifier::verifySignature method to be more generalized, so that users can avoid explicit exception processing

Change-Id: I61a7d6b5a4f38626be06bfb43a3e2e49ca749d23
security: Adding Error in CertificateExtension

Change-Id: I9ffb13a0db438513707adc9568ea52d1bf2e33bf
security+examples+tests: Updating examples and tests for the updated security API

Change-Id: Ie3f37bf3d0002a35333812b0dec582e7d3567d42
security: Removing unnecessary wrappers of info from KeyChain

Change-Id: Ic2c20c0ffb6769f1123df7b81ea2201bac7f7d5a
security: refactoring KeyChain and related classess

1. rename IdentityStorage as SecPublicInfo and PrivateKeyStorage as SecTpm.
2. KeyChain is defined as a template of sub-classes of SecPublicInfo and SecTpm, and KeyChain inherits from these two classes rather than has objects of these two classes.
3. rename some methods of SecPublicInfo and SecTpm to clarify usage and avoid conflicts
   SecPublicInfo: addKey, getKey, doesKeyExist, activateKey, deactivateKey
   SecTpm: generateKeyPair, getPublicKey, generateKey
4. adjust getter/setter of KeyChain & SecPublicInfo

Change-Id: Ib67631ad1c883100b1200a1a381d837bbbdb1d37
security: renaming sub-classess of SecPublicInfo and SecTpm and adapting corresponding interfaces

Following classes have been modified
BasicIdentityStorage -> SecPublicInfoSqlite3
OSXPrivateKeyStorage -> SecTpmOsx
MemoryIdentityStorage -> SecPublicInfoMemory
MemoryPrivateKeyStorage -> SecTpmMemory

Change-Id: I7441d1cf046b3aa9b19cbbaa4351bd5be84847d0
tests+Makefile: updates corresponding to refactored KeyChain and related classes

Change-Id: I0c80e3bc5043764090569ea75edf56c5b799eb7d