Code Review

Hey! Here are some edits that I made doing code review. Overall I think this is structured really well and I like how you used `*args`, custom exceptions, and a dictionary mapping commands to functions.

Some things I think would make refactoring easier in the future would be tests! It was hard for me to tell whether a change I made broke anything. (It's quite possible I broke something.)

Also, how could you make this more extensible? By that, I mean, what if you wanted to implement a web front end to this project? What would you have to change? For starters, I think you'd want to `return` the results of your functions rather than `print`ing them.

Let me know if you have any questions! :smile_cat: 
I tried figuring out a better way to do this (usually if you iterate through a dictionary and you want to use both the keys and values, you should use `iteritems`), but the best I had was something like:
```
for name, number in sorted(phonebook_data.iteritems(), 
                           key=lambda entry: entry[0].lower()):
    print name, number
```
and that's just a mess.