Feature/refactor stat and graph for #412

Stat and graph were remained to be refactored. This PR completes the refactoring of drivers.
Note that it contains some workarounds, because stat and graph have special structures unlike other algorithms.

It mainly contains following changes:

- stat
  - Merge ``core::stat::mixable_stat`` to ``core::stat::stat``. Now ``core::stat::stat`` is used for mix-enabled situation.
  - ``driver::mixable_stat`` is moved to ``core::stat::mixable_stat``.
  - The mixable is now defined as a typedef of ``delegating_mixable``. To do this, I renamed some interface.
  - Add ``core::stat::stat::register_mixables_to_holder``. Since ``core::stat::stat`` is simultaneously an algorithm and a model, it uses ``shared_from_this`` to extract a pointer to model.
- graph
  - ``driver::mixable_graph`` is moved to ``core::graph::mixable_graph``.
  - ``mixable_graph`` is now defined only for ``graph_wo_index``. Previously it is defined for ``graph_base``.
  - Remove MIX interface from ``graph_base``.
  - Change diff type from ``std::string`` to newly defined ``diff_type``.
  - Define ``mixable_graph`` using ``delegating_mixable``.