/**
 * @addtogroup Ewl_MVC
 * @section mvc_tut Tutorial
 * 
 * The Model-View-Controller (MVC) design pattern is commonly used to separate display, 
 * data and control code. The MVC concepts are used in Ewl for several widgets 
 * including Ewl_Tree, Ewl_List and Ewl_Combo. This makes it a lot easier to 
 * update and store the data for those lists as the Ewl widget doesn't care 
 * about the internal representation.
 * 
 * @section MVC Concepts
 * The basic MVC idea in Ewl is that we don't care what your data is. We don't 
 * care how it's stored, how it's sorted or when you load it. When your data 
 * changes you signal the MVC widget as dirty and it will redraw. As the widget is 
 * re-drawn it will ask you to give it information for each row/column as needed.
 * 
 * This can add a bit of extra work on the application end but provides for a lot of 
 * flexibility. We've also created a few helper functions to generate common 
 * models and views for you so you don't necessarily have to create these on your own.
 * 
 * There are two classes, along with the Ewl widget you're interested in, that you 
 * need to deal with when working with MVC widgets. These are:
 * 
 *   * Ewl_Model
 * 
 *   * Ewl_View
 * 
 * These classes will provide the pointers to the functions to call when 
 * the containers require information.
 * 
 * @code
 *   Ewl_Widget *list;
 *   Ewl_Model *model;
 *   Ewl_View *view;
 * 
 *   model = ewl_model_ecore_list_instance();
 *   view = ewl_label_view_get();
 * 
 *   list = ewl_list_new();
 *   ewl_mvc_model_set(EWL_MVC(list), model);
 *   ewl_mvc_view_set(EWL_MVC(list), view);
 *   ewl_mvc_data_set(EWL_MVC(list), ecore_list_new());
 * @endcode
 * 
 * In this example we're creating a simple Ewl_List widget and using a helper 
 * method to create a model to work with Ecore_List data. In this case our list 
 * is storing string objects so we can use the provided ewl_label_view_get() to get 
 * a pre-created view object.
 */
