Scottish Premiership Round 30 delivered major twists as Celtic and Rangers won, Dundee staged a dramatic derby comeback, Hearts fell to Kilmarnock, and Aberdeen were held late.