Implement actual robot handling

This allows the test suite to do Stuff(TM) using a robot defined
somewhere else.

TODO:
- Document that robot (post hardware description and arduino code)
- Decouple the idea of "ability to manipulate cards in reader" from
  "ability to use keyboard". The two are not related, really.
Reorder things slightly

The "slotevent" test would eject the card, not wait for the result, and
then exit. This would cause the "mechlist" test to fail due to a
CKR_DEVICE_ERROR.

We should possibly figure out if we can actually fix the
CKR_DEVICE_ERROR (although that may be something we can't actually do),
but for now at least keep things in a proper state when we SKIP a test.
Provide a more detailed error message when things fail
Don't forget to return TRUE when the device is already open
We don't need a delay *that* long
Whitespace cleanup
Fix check

"dev" is a char* containing a device name; "robot_dev" is an fd.

Verify the correct file descriptor...
Decouple "want dialogs" flag from "have robot" flag.
Produce an error message when the user tried something that doesn't work.
Initiate the "about middleware" application for Linux
Check uname and show the output
Split version number up into version number and build id
Use "" rather than <> for includes in the current directory
Show the build date, too
Make URL look good.
Reorder

The bitness is more interesting than the rest of the uname data
Don't forget to end gtk_list_store_set() calls properly
Show distribution-related information

call lsb_release -<something> -s and show the result
Make sure the UI definition is shipped
Unbreak distcheck