Add basic Robot class

This adds a sense-plan-act skeleton for a Robot class, and a main module
to instantiate it
Add max_speed method to wheel

This adds max_speed to wheel, which returns the (scalar) maximum speed
(which is the minimum of the scalar forward/reverse max speeds)
Make the wheel position counter overflow-safe

This makes sure that the count returned by a wheel doesn't suffer from
overflows due to the tinyenc counter size
It also adds a "bits" field to tinyenc so that the size of the counter
can be determined
Add tanksteer module

This adds the tanksteer module, which handles controlling the wheel
speed to do manouvres, such as straight line moves or turns.
Fix errors to get tanksteer module working

Tanksteer was written completely untested, this fixes stuff that didn't
work
Add localiser class

This adds a localiser class, but it wrongly uses theta = 0 to mean
pointing along the Y axis. We should use theta = 0 meaning pointing
along the positive X axis
Fix localiser semantics

theta = 0 is now along the positive X axis.
tinyenc: Add another hardcoded "1"

Add another hardcoded 1 for the bus ID
Rush rush rush....
tanksteer: Add localiser to Tanksteer

This adds the Localiser class to Tanksteer, along with other refinements
to the tanksteer in general
main: classrobot: Add new initialisation code and chassis

This adds the new init code for classrobot, adds a Tanksteer chassis,
and modifies the sense/plan/act loop a bit. Ready for task addition!
main: classrobot: Add WaypointTask

This adds a task which attempts to drive between waypoints. It works
mostly :) Main problem is that the left wheel controller is very poor.
After solving this I think everything will probably improve.