Implement interface for posterior sampling methods

Related to #1174 and #1065 (closed)

I would propose to use this occasion to further clean up the options_-structure and create a field options_.posterior_sampler_options that stores as subfields the various options.

The preprocessor should have an option posterior_sampling_method that accepts a quoted string that can be slice, random_walk_metropolis_hastings, independent_metropolis_hastings or tailored_random_block_metropolis_hastings

It should map into options_.posterior_sampler_options.posterior_sampling_method with default random_walk_metropolis_hastings, which replaces the current options_.posterior_sampling_method In addition:

  1. We need a subfields options_.posterior_sampler_options.tarb, options_.posterior_sampler_options.rwmh,options_.posterior_sampler_options.slice, and options_.posterior_sampler_options.imh that store the default options for the respective sampler as we already do for different mode_computes.
  2. We need the preprocessor to accept name/value pairs like in the already existing optim-option in the form of posterior_sampler_options = (NAME, VALUE,...). It should map into a string options_.posterior_sampler_options.sampling_opt, which can then be read out using read_key_value_string as we already do in dynare_minimize_objective.
  3. The already existing but undocumented options options_.proposal_distribution and options_.student_degrees_of_freedom should now become sampler-specific subfields of the fields introduced in 1.