Removed unneeded language extensions.
Golog's Conf is now just the current Tree (Node a b).

Before we wrapped around the current Tree (Node a b) the Conf type which
additionally held the current situation.
We now start with a tree which is rooted in Val (Node s0 ...), and all
calls to trans advance to the next Val node. This Val node always
contains the current situation.

This simplifies the code in some places a little bit.
The restriction that treeND, treeDT, and trans all return a Val-rooted
tree is not enforced in the code. I tried a phantom type for that, but
that probably introduces more confusion. Also, I'm not sure whether the
Monoid instance would work with this phantom type.
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).
Added some tests with treeDTIO.

Also a little restructuring.
Fixed: best yields error when it encounters an (Alt []) node

An Alt [] node should be treated the same way as an Empty node.
Removed unneeded import.
Merge branch 'iobat'