Add a utility wrapper function to call a callback if it can be and to do nothing if it can't.
Fix a bug in the handling of key groups where an illegal group wasn't detected -- no crash but it didn't do anything.
First pass at USB storage device handling based on the code the USA office has been duplicating in all their projects.

This is unlikely to be the final UI but it is a start.