Move --output to attelo decode; make mandatory

It seems a bit odd to be saving output during cross-fold evaluation.
I believe it wasn't really intentional to make that a possibility
Stray syntax error in attelo.experiment

Not sure if this module is actually meant to be used
Make attelo.decoding.astar test work again

The code had changed to use an EDU object rather than strings,
and we didn't notice because of dynamic typing.

We simulate these EDU objects instead.

Note that this code uses deepcopy on its discourse state,
which is potentially problematic because EDUs also get deepcopied,
but the search uses dictionary lookup, list membership, etc.

As a fix, it should suffice to make the EDU deepcopy just return
the object itself, but in order for that to be a reasonable thing
to do, we should enforce immutability on the EDU members.
Make EDUs immutable with no-op deepcopy

You should get a runtime error now if you try to set an EDU
property, but accessing them in the usual way should still work.