GitHub Issue #28 related: Added pico_timer_cancel

pico_timer_add() now returns a "struct pico_timer*", which is
now an opaque structure exported in the API.

The same pointer can be passed as the only argument to pico_timer_cancel() in order
to cancel the execution of a timer.

In the check_timer routine, invalid/cancelled timers are skipped with no effect.

This was tricky to hack. The heap cannot be traced with pointers to pico_timers
because the heap keeps moving in memory. The record in the heap now only holds the
reference to the actual timer, and the expire field (the latter allowing heap ordering).

This is also an optimization in terms of contiguous memory required by the heap,
because each member is now only eight bytes long, and the actual timer is now held in a
separate place in memory. The cost of adding a timer now is two allocations.
The cancel function is O(n).
Merge branch 'master' of github.com:tass-belgium/picotcp