Fix for setting Matrix/Vector values by Index

Many `Matrix*/Vector*` implementations were throwing `IndexOutOfRangeException` when you tried to set their values via their indexer due to a missing else statement.

example: things like the following would throw exceptions when the index was clearly in bounds.

    Matrix3 m = new Matrix3();
    m[0,0] = 1; // IndexOutOfRangeException

I've added the missing else into all Matrix implementations, and select Vector implementations where it was missing.