examples: make script shear_viscosity.lua executable
lua: add defaults to M.add_options()

The user interface shall have full control over default values for the
command line options:
  i) set values
  ii) either disable the default or fall back to a hard-coded value

The defaults are provided as an optional dictionary, omitting the
argument (or a certain key) enables either hard coded defaults or makes
the respective option mandatory. This works nicely because Lua returns a
missing key as `nil` and assigning `nil` to a dictionary key deletes the
entry.
observables.density_mode: fix path to H5MD output

Previously, the result was stored in
/observables/group/density_mode/value/value since the H5MD writer always
creates a dataset named "value" as required by the H5MD specification.
Now, the the intermediate group "value" is suppressed and the result
goes to /observables/group/density_mode/value.

The wavevectors are stored as HDF5 dataset named
/observables/group/density_mode/wavevector. I thought about storing the
wavevectors as an HDF5 attribute. However, I see the following drawbacks
here:

  1) The Lua interface for HDF5 attributes needs to be extended to
  support arrays of complex types (e.g., vector<fixed_vector<…>>), see
  halmd/utility/lua/hdf5.cpp.

  2) Passing arrays by value rather than as a data slot functor involves
  a conversion to a nested Lua table of numbers which has to be
  converted back to a sensible C++ structure.

  3) The HDF5 manual describes attributes as "small meta data object[s]
  describing the nature and/or intended usage of a primary data object".
  Further, "attributes are assumed to be very small" so storing them as
  HDF5 datasets would be inefficient. The maximum size of an attribute
  is quoted as 64k (which is 8k double numbers or 2730 wavevectors), and
  it is recommended to store large attributes in a dataset which is
  referenced by the attribute. (In HDF5 1.6, the attribute size was even
  limited to 16k.)

  See http://www.hdfgroup.org/HDF5/doc/UG/13_Attributes.html#SpecIssues

While issues 1) and 2) could be solved by extending the Lua bindings to
the HDF5 library, issue 3) lead me to the conclusion that arrays of
variable (but fixed) size are most easily stored as datasets rather than
as attributes since they may become very large potentially.

The alternative is to store the wavevectors in a dataset elsewhere
(e.g., /structure/parameters/wavevector) and to add attribute pointers
to the density_mode groups. Thereby, several density_modes share
naturally the same wavevectors and the role of the wavevector as an
parameter becomes more evident. This route, however, requires much more
coding and a (user-transparent) way of telling the density mode writers
where to find the wavevector dataset in the HDF5 file.
observables.ssf: require normalisation factor from the user

Drop automatic calculation of the normalisation factor. In a
multi-component mixture, it is typically the total number of particles.
As such it cannot be inferred from the particle count of just 2 density
modes. Further, one has to distinguish wether these density modes refer
to disjoint particle subsets or to the same particle group.

Fix superfluous intermediate group "value" in HDF5 output.
examples: compute static structure factor for liquids
examples: improve equilibration of binary mixture

For the default target temperature of 0.7, the initial lattice state did
not melt. In order to preparte a supercooled liquid, we heat it up
first, cool it down with a thermostat, and equilibrate it in the final
(NVE) ensemble.