RefVector: Add functions for element access
DirichletProcessParameters: Remove unused method init_from_prior.
Fix BayesianNetwork::add_dirichlet_process: 

* Register the new node as a child of the
  ConstantDirichletProcessParametersNode.
BayesianNetwork: Make a todo note to refactor around
insert_conditional_categorical.
DiscreteRandomVariable: Add a todo note

* RandomInteger, RandomBoolean, ... should be templates to easily
  create sub-types of DiscreteRandomVariable just with a typedef.
Fix DirichletProcessParameters: Distinguish the name of the parameters variable and of the component variable.

* Introduce the fields component_name_ and parameters_name_.
DiscreteNode: Improve the public-protected distinction in the interface

* Member variables should not be accessible directly by subclasses.
  Instead the base class should offer access methods. In fact,
  DiscreteNode already provided access methods as public members.
  
* Update the sub-classes to use the access methods.
DirichletProcessTest: Add test for construction, fix put_out_map, and reformat the file.

* Introduce the test suite SimpleDirichletProcessTest, which works on a simpler
  network than the existing test.
* The test case Construction is part of this new test suite.
* The template put_out_map was too complicated with its additional specialisation
  template.  Revised the template and removed the specialisation.
RandomInteger: Fix an error message

* It was “greater than”, but correct is “greater than or equal to”.
DiscreteRandomVariable: Note another problem with the interface.

* ri.value_range.begin() is not a RandomInteger again.
Rewrite DirichletProcessNode::init_sampling

* Create unit tests for this function
* Create a list of values of the random number generator
* Reimplement DirichletProcessNode::init_sampling to sample from the
  prior distribution instead of the posterior distribution. In this
  way, the algorithm can start from an empty list of mixture components
  (RandomInteger("name", 0, 0)).