After much deliberation I has found the only way to get group.Name = "Newname";
to work is to get the DirectoryEntry object and then change it. Code below
PrincipalContext context = new PrincipalContext(ContextType.Machine);
GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName");
var Groupentry = (DirectoryEntry)group.GetUnderlyingObject();
Groupentry.Rename("newname");
Groupentry.CommitChanges();