Streamlined error handling (per new specification).
Added platform selection to device constructor and renamed select_best_device to best_device_id.
Added thrower to error handler.