Ensure list of interfaces returned by normalize_interface_choice() contains only unique values
Add more logging; each class should take a logger object, and if none, instantiate its own logger
stop catching an expected KeyError in a generic 'except Exception' case
Update examples to use top-level logging properly, user logger instead of prints, and use InterfaceChoice.All