Fix memory leak in Lwt.protected
Fix memory leak in Lwt.protected

Lwt.protected t creates a new cancelable thread t' that waits on t. This
is done by adding a "waiter" function to t.

Before this commit, when t' was canceled, the waiter function remained
on t, and retained a reference to t'. This resulted in a memory leak.

Fixes #56.
Fixes #181.

c-cube/lwt,c-cube/lwt,rgrinberg/lwt,rneswold/lwt,ocsigen/lwt,rgrinberg/lwt,rgrinberg/lwt,rneswold/lwt,c-cube/lwt,rgrinberg/lwt,rneswold/lwt,ocsigen/lwt,ocsigen/lwt