ViennaMini now 'outputs' to externally provided streams

by default, cout is used ..
finalized 'stepper' class -> incorporated into simulator

the simulator class now holds an instance to a stepper object,
allowing the user to set up arbitrary contact parameter sweeps,
as can be seen in the mosfet2d example:
  mysim.stepper().add(gate_contact,  0.0, 0.2, 0.1);
  mysim.stepper().add(drain_contact, 0.0, 0.3, 0.1);
  mysim.set_output_filename_prefix("mosfet2d_dd_np_result");
  mysim.run();

you can add an arbitrary number of sweeps, the stepper will generate
the NxMx... dirichlet setups, and upon the simulators order will
actually apply them on the device (this might be moved to the
simulator class in the future ..)

adapted the file writer accordingly: removed the simulator's 'write()'
and replaced it with 'set_output_filename_prefix("...") -> a suitable
postfix will be added by the simulator based on the stepper information

-> coming up: linking a 'step id' with a 'problem description', so
the results of each simualtion are held in memory -> required for later
transfer to GUI
revisited 'contact potential' approach + support for simulation sequence

@1: the contact potential is now set via the simulator class
    -> removed from device and stepper class
    -> contact potentials are forwarded to 'problems' which
    actually apply the dirichlet contact values

@2: device class now holds a vector<project_descriptions> which is sized
    according to the number of simulation runs reported by the stepper class
    -> we can run now a series of contact sweeps and at the end not
    only have the output files correctly namned but also everythihng in the
    memory which can thus be later accessed by ViennaMOS
implemented 'get_terminal_current' post processing

-> used in poisson-dd_np:
after the simulation, for each contact the current is computed
based on identifying the interface elements between the contact and the
semiconductor and accessing the electron/hole_density data on the
coboundary cells

-> due to ViennaFVM's cell-based approach, the implementation was rather easy
quicksafe: currently working on CSV class

.. to hold the postprocessing results
-> should support writing to output csv files for standalone
usage, but also an API to access the results in memory (ViennaMOS)