gkeys: Add key-search action

Add _list_search() sub function.
Add category output and grouping.
Fix arg as a list searching as well as seed values as a list.
Use recursion to get to single value searches.
Make nick search to be partial unless --exact specified.
Move main key_search code to SeedHandler class, it is much better suited to this class.
Add 1name subparser option for single name entries only
Add seen tracking in key_search to eliminate duplicates
Add --all option to key-search
If --all is specified, it filters out search results to match a seed for all criteria specified.
gkeys: Move all GKEYS definitions to it's own file

Fix imports in other files.
gkeys/gkey.py: Add keys and uid fields, update() to GKEY

keys field will hold the primary key fingerprints for the (to be/) installed GKEY.
fingerprints and uid fileds will be populated with all uid's and fingerprints defined in subkeys using the update().
gkeys: Add keys and uid options to actions and seed handling

Add code to auto-update existing installed gkey.seeds files with the additional data.
gkeys/lib.py: Add the new GKEY.update() to add_key and refresh_key

This updates our installed gkey.seed with all fingerprints including sub-keys and uid's.  This way searches for keys used to sign files can be found if the key used to sign the file was not a primary key.
gkeys/actions.py: Add auto-search capability to verify

If verification fails with NO_PUBKEY, it then does a search for the correct verification keyring to verify with.
gkeys/actions.py: Improve verification messages and info
gkeys/actions.py: Fix broken key-search printing
gkeys/gkey.py: Separate uid string printing for list type output
gkeys/actions.py: Add uid search support
gkeys/actions.py: Alignment tweak for key-search message
gkeys/exception.py: Initial creation of GkeyException classes

Mostly copied, modified from PortageException code.
gkeys: Add UpdateDbError exception usage
gkeys/actions.py: Rename key-search action to search-key for consistency