Changes for CheatyVision

added a CheatyVision object which polls NetworkTables for the QR hash and decodes it, saving joystick, axis, and button states locally.
added a CheatyJoystick object with same interface as Joystick (mostly) that instead looks at the CheatyVision object for inputs
this CheatyJoystick can be given to JoystickButton objects in place of normal Joystick objects

added an alternative CheatyOI to replace OI that instantiates the CheatyVision object and replaces all Joysticks with CheatyJoysticks

changed Robot to update CheatyVision every step in both Teleop and Auto.  Added an option for a null auto command.  Since the Scheduler runs in both Teleop and Auto, a null auto command would allow commands spawned by CheatyVision buttons etc. to run in Auto.  Of course all these commands will also run normally in Teleop.

This framework must be tested... to make sure the scheduler still does what we think and the joystick stuff works

CheatyVision's update method still needs to be implemented to parse the QR hash from the Network Table into joystick info.  See encode/decode libs written in python for help on this.  Another option would be to do this decoding on the Driver Station in python (using python lib), then send all axes, buttons, etc. uncompressed to robot over Network Tables.  Are we ok with this amount of SmartDashboard traffic, as compared to a single string?
Not sure if that last commit caught everything...