Simpler promote rules. Add test for semiring_matmul