Fixed support for negative gravity

A bug in timeForDisplacement caused bad results with negative acceleration, causing a square root calculation with negative input. This has been fixed, which resolves #1.

Also added a postBounceLimitCheck() that, when the ball has come to a stop places it on one of the edges of the strip and faces it in the correct direction. This resolves #2.

An array for ball colors has been added, and replaces the calculated color of the balls dependent on their speed. This makes it easier to keep the different balls apart as they bounce along the strip.

Wrapped all serial debugging prints in precompir #if statements, causing them not to be printed during regular operation. Added a function to the serial interface whereby sending a '?' reports the height, speed, and kinetic energy for all the balls.