Rotate around arbitrary coordinate

replaces #1773