Move exceptions to contacts.py and handle them at shell.py

Major commit here, check out diff if i missed anything.

First i added regex matching for the phone number, currently only
supports my country's format (+areacode number).

The phone number is now displayed differently.

Most exceptions are now raised in contacts.py and handled in shell.py,
this should he been done in the first place but i was too stupid to
realise it then. See diff for contacts.py and shell.py for all the
changes.

Added a new save method for ContactHandler which is now called by
shell.py to save the current address book.

Removed all __del__ methods, they were useless.

Added new exception UnknownPhonePatternException to be called when the
user inputs a phone number in an unexcpected pattern.