Model visualization generator

<h2> Overview </h2>

The model visualization generator feature allows to check the completeness of a data model and to produce a diagram of it:
- Metadata object parsing:
    - nodes are defined by Node objects;
    - relationships are defined by Relationship objects and couples of Adjacency objects.
- Output formatting: Dot code format implementation done and tested.

<h4> How to use </h4>

    python:
    >>> visualizer = GraphvizVisualizationGenerator(myMetadata)
    >>> visualizer.set_output_path('/tmp/')
        .set_filename('db_model').run().write_output()
    
Then:

    shell:
    $ dot -Tjpg /tmp/db_model.dot -o /tmp/db_model.jpeg
    $ eog /tmp/db_model.jpg

or 
    
    python:
    >>> from subprocess import call
    >>> call(["dot", "-Tjpg", "/tmp/db_model.dot",
              "-o", "/tmp/db_model.jpg"])
    >>> call(["eog", "/tmp/db_model.jpg"])

<h2> Content </h2>

- VisualizationGenerator: abstract class implementing non-output-language-dependent methods only.
- GraphvizVisualizationGenerator: Implements output formatting methods for dot code generation.
- Node centric diagram computation method for graphviz: Draw diagrams of each node neighborhood.
- configuration:
    - color_settings: a list of Graphviz colors (see: Configuration)
    - dot_template: a Graphviz template optimized for dot generation (see: How to use)
- TestGraphvizVisualizationGenerator: Testcase on title, node and relationships specifications.

<h2> Graphviz visualization Configuration </h2>

A configuration folder is located in graphviz/blueprints/model_visualization.
It contains 2 configuration files:

<h4> Template </h4>

Graphviz digraph template:
- Sets Graph style
- Is appended with:
    - title;
    - node specifications;
    - relationship specifications.

<h4> Colors </h4>

To color the nodes, one can either create a customed configuration or use the default color list.

A customed configuration could be:
- A list: The final visualization will color nodes using those colors only. Order is not respected.
- A dictionary, with node names as keys and colors as values: this allows to keep a colour code.