anim_concentrations: use region names in connection graphs

There is probably something wrong wrt. the difference
between regions and voxels in this code. But it is better
than what was there before.
anim_concentrations: feed indexes to draw from the outside
anim_concentrations: save movie frames in parallel

# of threads equal to the number of processors is used.
This saturates the CPUs, so seems to be a good choice.
anim_concentrations: fix xlabel in reactions
anim_concentrations: make plot size configurable
Remove catalyst support

It was incomplete, and it can be easily implemented using
a reaction with substrate which is both a reactant and a
product.
Simplify Reaction a bit

It seems that there was an second way to set subtrates,
that was not actually invoked from anywhere. Removed.
Simplify ReactionScheme creation, step I
Move logic from Reaction to ReactionScheme

This way everything happens in one function and it
is easier to control what is happening.
Remove duplicated method getSpeciesIDs
Allow empty OutputScheme

Exception in thread "main" java.lang.NullPointerException
        at org.textensor.stochdiff.numeric.BaseCalc.extractOutputScheme(BaseCalc.java:212)
        at org.textensor.stochdiff.numeric.grid.SteppedStochasticGridCalc.init(SteppedStochasticGridCalc.java:162)
        at org.textensor.stochdiff.numeric.grid.SteppedStochasticGridCalc.run(SteppedStochasticGridCalc.java:308)
        at org.textensor.stochdiff.SDCalc.run(SDCalc.java:54)
        at org.textensor.stochdiff.StochDiff.main(StochDiff.java:73)
java org.textensor.stochdiff.StochDiff sdrun.xml  0.94s user 0.07s system 78% cpu 1.304 total
anim_concentrations: make sure that unconnected regions and species are drawn
anim_concentrations: plot concentrations over time
HDF5: add partial support for skipping event types

Apparrently HDF5 does not like arrays with empty dimensions.
Let's just skip writing the array in that case.
Move getParticleCount to super class

DeterministicGridCalc was missing it.

Since outj can by any j, rename it so.
anim_concentrations: limit times shown on plot
Rework state saving and loading

The state is saved in different units (concentrations for Deterministic,
numbers for Stochastic). The ResultWriter itself is responsible for saving
and loading the state, and performs necessary conversions.
Convert GEOM_2D/3D into an enum
toArray() is just as happy with empty array
anim_concentrations: properly label drawn species