new matrix, vector hierarchy

1. new matrix/vector hierarchy
2. put convenient typedefs of each class in their corresponding header
files. Reason: put in a single header file would lead to including a
large header file even only uses part of the typedefs
3.Matrix2x2 and Matrix3x3 now becomes MACRO with parameters.
Usage: Physika::Matrix2x2(float).
It's a little nasty, I could have used template alias feature of c++0x
to make it better like Matrix2x2<float>. Too bad currently few compiler
supports this feature.