Rangers closed the gap to second-placed Celtic after beating St Mirren 2-1 at Ibrox, although still remain six points adrift of Scottish Premiership leaders Hearts.