Bump version.
Add 'RemotePtr' implementation.
Add 'Coupon' dummy module to experiment with the interface.
Check in partial conversion to 'Coupon' style that type checks.
Working 'Coupon' implementation. No garbage collection yet.
Refactor FFI. Hide 'ElementId' from functions that use the FFI.
Remove 'clear' function. Replace 'EmptyEl' message by an FFI call.
Update .cabal file.
Attach event handlers to elements so they can be garbage collected.
Attach 'Event' to elements so they can be garbage collected.
Remove dead code: 'readValue', 'readValues'.
Move 'Coupon' to 'Foreign.Coupon'. Rename 'RemoteBooth' to 'PrizeBooth' again.
Enforce usage of 'Foreign.Coupon.withItem'
Use 'IORef' as keys for weak pointers. Explicitely performing a garbage collection works as intended, though some issues remain.

In particular, elements not in the DOM tree are deleted from 'el_table' and elements that are in the DOM tree are not deleted. However, it looks like the debug statements are helping to keep some elements alive.
Remove possibility of returning 'elid' for elements that have not been created by the server. This affects 'getElementByTag', but is necessary to ensure that the server has full control over garbage collection.
Add function that creates a key/value weak pointer for IORefs. Garbage collection seems to work properly now.
Remove 'RemotePtr'. Add 'rebug' flag.
Merge branch 'garbage-collection'