Reworked the driving code completely.

Instead of being one big file (BestRobotDrive.java) I split it up to make it
easier to understand, more flexible and follow better OOP practices. This makes
it easy to add extra motors or make other changes. Lastly, I changed the
commands and DriveSubsytem to make use of the new code.
Remove BestRobotDrive.java since the new system no longer uses it.

It was in a state of half conversion to an 8 motor system and was a horrible
mess in the first place so I decided it was no longer necessary. If I need to
reference the algorithms, I can just look at another branch. I also removed one
last accidental reference to BestRobotDrive that remained in the new system.
Bring branch 'better-drive' up to date with master
Add documentation to WheelController
Merged in license header changes
Added documentation and made some minor code changes

- Added javadocs and line by line documentation to all classes in the drive package
- Simplified math and condensed if statments into ternary operators in ArcadeDriveController
- Changed the default description of a DriveController to its class name
- Added custom descriptions to FourWheelDriveController and TwoWheelDriveController
- Made MecanumDriveAlgorithm.controller final
- Moved PIDController initialization to MecanumDriveController constructor
- Substituted Math.PI for 3.14159 in MecanumDriveController
- Reset the integral term of the PIDController when the gyro is reset
- Fixed pesky spelling correction of mecanum in Netbeans
Attempted to standardize the drive code values and generated javadoc

- Removed field-centric joystick z and y-axis inversions
- Fixed CD link in FrontAutonomousDriveCommand
- Added minor documentation
- Changed mecanum drive inversions
- Removed rotation PID inversion
- Generated javadoc files
Fixed x direction inversion in MecanumDriveAlgorithm
Added mecanum PIDController SmartDashboard widget
Add sending of values to SmartDashboard

* Add joystick value sending
* Add MecanumDriveController value sending (only cartesian, because that's what
  we use)
* Add FourWheelDriveController value sending
* Make FourWheelDriveController.drive(double, double) delegate to drive(double,
  double, double, double)
* Renamed "Mecanum Drive Controller" to "Rotation PID Controller" on
  SmartDashboard
Fix rotation direction and replace pi constant with Math.PI
Add LED control trigger implementation

* The LEDs are controlled by a method called from FunCommand that checks the
  robot state and updates the robot accordingly
* Add isExtended() methods to SweeperSubsystem and CatcherSubsystem
* Make SweeperSusbsystem.MotorState.state public and add value constants
* Add hashCode() and equals() implementations to SweeperSusbsystem.MotorState
Fiexed motor directions and a SmartDashboard print.
Merge branch 'leds' into better-drive.
Fix autonomous and wheel inversions.

* Make autonomous move in the correct direction
* Move wheel inversions to DriveSubsystem constructor