Fundamentals Of Algebraic Graph Transformation