Big refactoring of SDFHierarchyFlattening.flattenGraph and SDFHierarchyFlattening.flattenVertex to cut off long methods.

Added methods:
-prepareGraphHierarchy, which calls prepareHierarchy on subgraphs of a SDFGraph
-flattenVertices, which calls flattenVertex on subgraphs of a SDFGraph
-copyVerticesFromSubgraphtoSupergraph, copyVertexWithPropertiesAndArguments, copyEdgesFromSubgraphToSupergraph and copyEdge which job is to move elements (vertices and edges) from a subgraph to its supergraph
Refactor of the flattenGraph method from a recursive method to a for loop on the depth of the flattenin.
Refactoring of treatSinkInterface method. Added methods addRoundBuffer and addImplode.
Merge branch 'develop' into preesm-issue3

Conflicts:
	eclipse/plugins/org.ietr.dftools.algorithm/src/org/ietr/dftools/algorithm/model/sdf/visitors/SDFHierarchyFlattening.java
Refactorin of the treatSourceInterface method. Added methods addExplode and addBroadcast.
[BUGFIX] Corrected Preesm issue#3: The inserted SDFForkVertex was the target of an edge with the wrong consumption rate, provoking non-schedulable graph errors.

The problem occurs when an edge stands between two vertices with the same number of repetitions and the target one is instantiated during flattening due to inner loops.
In such case a SDFForkVertex is inserted between the two vertices, but the edge between the source and the Fork is set with a consumption rate without considering the number of repetitions of the source.
Refactoring of the SDFHierarchyInstanciation class.

Added a method getExistingEdge, called from createEdge and removed some useless TODOs.