Add search method.

Added a new method modules.contacts.ContactHandler().search() that takes
2 arguments, a name and an optional group argument. If no group was
given then it will just run through all the existing groups otherwise it
will only search that group, it uses the name to match an existing
contact, the name can be a partial name. This will return a dictionary
with the format { groupname : [list of contacts] }.

Also modified modules.shell.Shell().do_search() to use the new search
method, and since that only returns a dictionary, it now handles how the
info is presented to the user.