Improve error message when queuing too many beeps.

It was noted that this could be improved on the list.

Change-Id: I43e4f6b29ba2094f69eb221a475ac8742687ff70
Fix enumeration of multiple USB devices

When multiple motor or ruggeduino boards were present, only one of
each type would be accessible using numeric keys -- e.g. if two motor
controllers were present, then only Robot.motors[0] would exist, and
not Robot.motors[1].

This was because a counter was not incremented when adding those items
to the dicts.

Change-Id: Ie4f19de21ac03767c49e030d796192e8171888e6
Merge "Improve error message when queuing too many beeps."
Optionally remove gunk files from user code

Sometimes it may be useful to remove temporary editor files from the
user code.  Under the principle of least surprise, we won't be
deleting files from the user's code by default.  So by default this
removal is turned off, and can be turned on with the '-r' switch.

Additionally, remove 'swp' files as well as nano save files.

Change-Id: I420e1eefc307d85ad8bfe34c218005aeb1f170b8
Fail informatively when two Robots are created

Previously, when two Robot object instances were created, the error
that one would get out was cryptic.  This patch adds detection of this
problem, and displays a better error message.

The detection works by creating a lock file, at
/tmp/robot-object-lock.  If the lock can't be acquired by the Robot
object then it will throw an exception with an error message that asks
if the user has created more than one Robot() object.

This file-based approach is resilient to two Robot objects being
created in separate threads or processes.

Change-Id: I05f291529de2530d6295ed11a2b61af434f9e699