PID improvements

(1) Output no longer accumulating
One of the things that make the current PID implementation different
from other implementations, is its "accumulating output"
(code:  "output += p->output;").
I've really been struggling to understand the implications of that line,
and eventually decided to remove the accumulating behaviour
for the following reasons:
- It seems to interfere with the idea of the "integral term",
as it will keep track of the past.
- The "accumulating output" makes the output less sensitive to changes.

(2) Avoid oscillating around 0
Added an additional check to avoid "backward" motor output when requesting forward movement,
and vice versa.
This should improve stability.

IMPORTANT:
Your old PID parameters are most probably not optimal anymore, after the above changes.
Here is some guidance to recalibrate and find new PID parameter values:

	(1) Select a representative set of speeds you want your motors to run at, and translate that into ticks/frame.
	E.g. a speed of 0.2m/s translates into ticks_per_meter*0.2/30 (PID runs at 30Hz).

	(2) Then try finding PID parameters that work well for the set of selected speeds.
	Tuning PID controllers is more an art than a science (at least for me).
	See https://en.wikipedia.org/wiki/PID_controller for some guidance.
	I typically select parameters that let me get to the desired speed reasonably fast (within 0.5s),
	without too much overshoot, and stabilizing quickly around the desired output value.
	Furthermore I like to keep my Kp reasonably small, to prevent sudden increases in motor output when starting from stop.
	The definition of "small" depends mainly on the desired tick rate at maximum speed, and your desired maximum acceleration speed.

The PID tuning can be done either:
	(a) via ros_arduino_bridge (with Twist commands and changing the PID parameters in the config file),
	using rqt_plot to display /cmd_vel/linear/x, /cmd_vel/angular/z, /odom/twist/twist/linear/x and /odom/twist/twist/angular/z

	Example Twist commands:
		$rostopic pub -r 15 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.07, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'
		$rostopic pub -r 15 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'

		$rostopic pub -r 15 /cmd_vel geometry_msgs/Twist '{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.6}}'
		$rostopic pub -r 15 /cmd_vel geometry_msgs/Twist '{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 1.0}}'

	(b) directly on the arduino code by adding Serial.print() statements in the PID controller code,
	to display input/output while sending "u" commands to change PID parameters and "m" motor commands.
	I prefer the latter, as it allows me to directly see the raw Input and Outputs, rather than the input/output speeds.
	(Note: if you are taking this route, do NOT forget to disable the additional output before using the ros_arduino_bridge; otherwise it will not work).
resetPID() improvement

Changed criteria to check for need to reset PID
from checking whether PrevInput has been set to zero,
to checking whether Encoder and PrevEnc are synced.
This is in fact what really matters.
Added MIN_PWM support and SEND_PWM command.

Following PID improvements where made:
1) Take into account minimum PWM at which motors start moving (MIN_PWM).
This should improve responsiveness of the algorithm.

2) Added additional SEND_PWM command "n" to send direct PWM input to the motors,
bypassing the PID controller.
This was added in support of configuring the new MIN_PWM parameter (see above).
In particular, this is useful to determine the appropriate MIN_PWM value.

By default, MIN_PWM=1, which disables the MIN_PWM behaviour.

Guidance to use MIN_PWM:
1. Figure out MIN_PWM
Find MIN_PWM using the new SEND_PWM "n" command
(e.g. "n 50 50" sends PWM of 50 to both motors).
Increase the PWM value until both motors are turning slowly, but reliably.
That is, consistently giving back the same number of ticks
(use "e" to read out the number of ticks and "r" to reset).
Try both forward and backward, on both motors,
and take the largest absolute value as MIN_PWM.

2. Discover your minimal speed.
With the default PID parameters, request some very low speeds
(very low depends on your motors, for mine: < 0.05m/s).
Since the PID controller does not allow values of 0, to avoid oscillating behaviour,
it will always output at least the MIN_PWM command.
The speed associated with that MIN_PWM is your minimum speed.