Currently all transformation nodes in NBL (align, translate) call transformShape, which modifies all points. It is much more efficient to store a transformation matrix and to modify the matrix than to loop through all points for every node.
This is a big refactoring, since all functions that depend on transformed information (bounds, point on path, path combine) need to take the transformation matrix into account.