Dynamic experiments

The pros:

* breaking up the DAQ into separate `Acquisition` chunks improves modularity (and provides all the benefits that go with it)
* thus we can do `experiment.swap(darks, radios)`
* we have some basic acquisition routines

Cons:
* the `argdrop` is boilerplate but I don't know how else to get rid of it for now.

Something to show:

```python
darks = Acquisition("darks", argdrop(acquire_darks, ...))
flats = Acquisition("flats", argdrop(acquire_radiographs ...))
radios = Acquisition("radios", argdrop(acquire_tomogram, ...))

experiment = Experiment([darks, flats, radios], ".")
# Now there is a data structure with all the files including the log file
experiment.run()

# We want to change the acquisition order
experiment.swap(darks, flats)

# This works too
experiment.swap(1, 2)

# Now we acquire stuff in order [flats, radios, darks]
experiment.run()
```

I will provide a nice example once we agree on some reasonable outcome of this. Let's not forget that this is about #56 and some todos:

- [x] Create standard radiography and tomography experiment classes
- [x] Provide automatic flat correction again
- [x] Enable live preview by imaging experiments (just like auto frame writing)
- [x] Write more tests
- [x] Check the docs
- [x] Add automatic iteration determination based on directory structure
- [x] Fix TODOs in the code based on #148 
- [x] Make an example in [concert-examples](https://github.com/ufo-kit/concert-examples)