Fixed possible NullPointerException when encountering unknown device

I introduced UnsupportedDevice so null is never returned when creating devices. I also added a little bit more logging.