PID

* Created NaivePIDController class (which does PID)
* Put Encoders in the Chassis class
* Moved control code from the Chassis class to Commands
* Modified MoveStraight command to use PID
* In the Chassis subsystems, created PID controllers for both position
and velocity of each gearbox.
--
Problems:
* When naming the pidcontroller P/I/D values in smartdashboard (in the
Project... method in the naivepidcontroller class), I expect the fields
to show up as "[name] P", "[name] I", and "[name]" D]. However, the
names show up as simply "P", "I", and "D"--without the name.
* SmartDashboard only supports numbers up to 3 places past the decimal.
Scale the PID values so they fit.
* It doesn't actually work. Haven't had a chance to look into it yet
(what the actual problems are). It would be nice to reimage the robot to
enable NetConsole, so we can printf output.
Attempt 2

Velocity PID to tank drive.
Potentially fixed PID issue

Made PID control speed-invariant
Added a bunch of comments
Negated PID correction values so that correction terms will be positive.
Divided inputted SmartDashboard PID values by 1000 to allow for finer
PID tuning (because SmartDashboard only allows for up to 3 places past
the decimal, for some odd reason)
Added more feedback; Incomplete NetworkTables wrapper

Incomplete NetworkTables wrapper: because sending out networktables data
too often crashes (buffer overflow, presumably)
Renamed Tank to Arcade
Implemented Arcade Drive

Left joystick X = turn, Right joystick Y = speed.
PID is only used when turn < 0.15
Working Velocity Control

:D
Tank+Straight

Press button 2 on joystick 2 to use straight mode. Release to use tank
drive.
Renamed

Renamed JoystickArcade to JoystickTank, because it actually is tank
drive.
Renamed MoveStraight to JoystickStraight
DriveStraight

Change units to meters
Renamed SmartDashboard fields
worked on DriveStraight command.
Merged PID-for-Position/Velocity into master. Works as a tank with a lock-controls button, tested