Auto shift now uses acceleration (See description)

Apparently it is more practical to use acceleration rather than
velocity for automatic shifting. Of course, encoders have no way of
getting acceleration so I wrote a method to do so (SUPER SKETCH PLEASE
READ IT OVER) and added it to EncoderWrapper, which all the Encoders
are now. I also added a lock function which allows the driver to force
the robot to remain in one gear (apparently useful). Lastly I put a
time delay on the shifting to make sure that the robot can’t keep
switching between high and low over and over again (this is a problem
that is complained about on CD).