simd4x4f: Simplify the matrix/vector multiplications

Rearrange the operations so that it's easy to follow what they are
doing, and avoid nesting too deep.

The previous code does:

    add (mul (), add (mul (), add (mul (), mul ())))

which maps to:

    mul() ⎫
          ⎬ add() ⎫
    mul() ⎭       ⎬ add() ⎫
            mul() ⎭       ⎬ → res
                    mul() ⎭

In order to make it easier to follow, we can rewrite it as:

    add (add (mul (), mul ()), add (mul (), mul ()))

which more intuitively maps to:

    mul() ⎫
          ⎬ add() ⎫
    mul() ⎭       ⎪
                  ⎬ add() → res
    mul() ⎫       ⎪
          ⎬ add() ⎭
    mul() ⎭

and it lends itself to a better indentation.
simd4x4f: Use vec4_mul() instead of unrolling it inside matrix_mul()

Now that we can follow what the code does, we can go back to calling
vec4_mul() from matrix_mul().
matrix: Use the right order for multiply() operands

Inside interpolate() we're multiplying two matrices with the wrong
order.
docs: Note about non-commutativity of matrix multiplication

If I can get it wrong, other people might.