TDD: add unittests for new python model API
Add abstract ParadigmController.
A ParadigmController is a class able to link
  - Data object (like python files)
  - Model object (like python models)
  - Qt Editor
This class gather common parts of previous paradigm controllers.
Restructure models and execution.

**Model**

Model is a runnable object with inputs, outputs and runnable code.
Important methods and attributes are:

  - Model.inputs_info : attribute defining inputs
  - Model.outputs_info : attribute defining outputs

  - Model.init : prepare namespace and define initial inputs
  - Model.step: run code one time
  - Model.run : init + step

  - Model.set_func_code : set executable code corresponding to step, init, ...
  - Model.set_code : set code containing i/o data in headers, step code and functions

**Data**

Data is an object representing binary raw data. A data has a path and a filename.
If file exists, data content is stored on disk, else data content is stored in memory.
In both case, one can get content thanks to "read" method.
Data is not runnable and can be of any type: source code, image, ...
Currently, only physical path are implemented.

**Conversion services**

Some kind of Data can be converted naturally to model and some Model to data.
For example, it is the case for Python file and PythonModel.

This conversion is done with services
  - core.service.model.to_model(data) : convert a model to data
  - core.service.data.to_data(model) : convert a data to model

**Run services**

Two service are used to run models:
  - core.service.run.namespace() : returns a dict containing control, libs and data loaded when a project is open
  - core.service.run.get_model(name) : search a model with name in project, returns a Model class if found

**Graphical Editors**

Editor are Qt widgets able to edit Data object.
OpenAleaLab provides two editors:
  - RichTextEditor: source code files : python, lpy, r, ...
  - DataflowView : visualea dataflows

**ParadigmEditor**

This widget allow to open, edit and save model and data and also run models.
Widget uses "Graphical editors" to edit data and "to_data" to convert model to data.
It uses "to_model" to convert content to runnable models and be able to run it.
Internally, it uses "ParadigmController" to do that.

**ParadigmController**

ParadigmController is a class that knows which editor to use to edit data and model.
Sometimes, it is possible to run only parts of code. In this case ParadigmController can extract and adapt part of code from editor to run it.
Also, model sometimes need additionnal information to run. For example "colormap" defined in an other widget or "controls".
It is the role of ParadigmController to extract this information and pass it to model.
Update entry_point to support new model API
Fix bug: double click on composite node in package view failed

Error was:
Traceback (most recent call last):
  File "${OPENALEA_SRC}/oalab/src/openalea/oalab/package/treeview.py", line 40, in mouseDoubleClickEvent
    cat, fn = applet.add(applet.project(), obj.name + '.wpy', obj, category='model', dtype='Workflow')
  File "${OPENALEA_SRC}/oalab/src/openalea/oalab/gui/container.py", line 342, in add
    data = project.add(category=category, filename=filename, content=code, dtype=dtype)
  File "${OPENALEA_SRC}/core/src/core/project/project.py", line 230, in add
    return self.add_item(category, obj, **kwargs)
  File "${OPENALEA_SRC}/core/src/core/project/project.py", line 336, in add_item
    data = self._add_item(category, obj, **kwargs)
  File "${OPENALEA_SRC}/core/src/core/project/project.py", line 305, in _add_item
    data_obj = DataFactory(new_path, mimetype, dtype=dtype, default_content=content)
  File "${OPENALEA_SRC}/core/src/core/service/data.py", line 123, in DataFactory
    f.write(default_content)
TypeError: must be convertible to a buffer, not CompositeNodeFactory
Factorize IPython user_ns management in Models
Rename namespace functions

_save_ns => _push_ns
_reload_ns => _pop_ns
_save_init_var => _populate_ns
Merge pull request #94 from gbaty/clean_model_rebased

Clean model rebased