Split the Context class

This is part of the new C++ API serie #131

A Data_Store class similar to a map<string, Data_descriptor> should be extracted from the Context and made accessible by a data() member function.

A types() member function should provide access to a map<string, Datatype_template>&

This issue is only about splitting the class, not making any change to them.

Edited by Julien Bigot