Implemented treeIO, treeDTIO, sync.

Finally found a compact implementation (untested, though):
ConfIO and ConfDTIO both have a tuple as payload. Its first component is
in both cases a SyncIO (newtype), which basically contains an IO-wrapped
new ConfIO or ConfDTIO, respectively (we have only one SyncIO, not a
second SyncIODT, by using type parameters, because we want to have only
one sync function). The second component of the payload tuple is () in
the ConfIO case and (Reward, Depth) in the second ConfDTIO case.

As further changes, choiceDT has a function which extracts the (Reward,
Depth) tuple from the payload. In the ConfDT case, this is just id, in
the ConfDTIO case it is snd.

In this framework, the new sync function (note: the member of the IOBAT
class is now named syncA) returns the IO-wrapped ConfIO or ConfDTIO
configuration. This IO-wrapped configuration is the result of taking the
situation handed over to the treeIO or treeDTIO function and adding new
actions using IOBAT's syncA function, i.e., all actions executed in
since the initial action (wrt treeIO or treeDTIO) are synced.

Since we defined a configuration just as a tree (basically) of
situations, the configuration of returned by sync provides a sound
future wrt the synced situation (not wrt the unsynced situation).