Added crude obstacle avoidance

Initial obstacle avoidance behavior uses sonar reading to determine
distance to nearest obstacle, then uses a weighted sum of the pings to
determine the best direction in which to flee.

When approaching a long wall, this behavior produces a 'skipping mode'
where the robot approaches the wall, runs away, and repeats, but manages
to get closer to the goal. But this would fail if there were a wall that
required a long detour to get around.

The solution is a sliding mode. The Hybrid Automaton architecture will
allow for a cleaner implementation of this.
updated README