Use {}-initialization all over the place

I still don't really get the new-style {}-initialization, whether it is
applicable in the current context or it just translates to C-style
member initialization. But well, we use is all over the place and see
what we get.

I have deliberately excluded the test since the {}-initialization
somehow interferes with the assert* macros. But I learned I cannot get
rid of the macros completely since __FILE__ et al. are the only option
to get context information for logging.
Rename inverse() to invert()

It is an action, not a property.
Remove inplace arithmetic operators

We try to make those basic data structures like Vector, Point, Matrix
and Transform immutable. Therefore, we remove inplace operators like +=,
-= and *= from Point and Vector.
Matrix: perform inversion by explicit Cramer's rule

I guess Gaussian elimination by maximal pivoting is a bit of an overkill
for a 4x4 matrix. Guided by [this][1], I have now implemented the
explicit Cramer's rule for 4x4 matrices. Quick benchmarking shows quite
the performance boost.

    Gaussian elimination by maximal pivoting:
        Transpose matrices:                       16.7ns
        Invert matrices:                         373.9ns
        Matrix-Matrix multiplication:             57.1ns
        Initialize transformations:              420.2ns
        Apply transformations to Vectors:         25.3ns
        Apply transformations to Points:          24.8ns

    Cramer's rule:
        Transpose matrices:                       27.4ns
        Invert matrices:                          69.9ns
        Matrix-Matrix multiplication:             57.0ns
        Initialize transformations:              117.9ns
        Apply transformations to Vectors:         24.9ns
        Apply transformations to Points:          25.9ns

Benchmarking has been performed with -O3 optimization enabled.

On a sidenote, some small percentage could be saved by passing by value
instead by const-ref. This is not true for the transpose() function.

[1]: ftp://download.intel.com/design/PentiumIII/sml/24504301.pdf
Matrix: pass by value for transpose()

Despite the fact that there is no clear performance advantage for
transpose() by passing by value over passing by const-ref, we do it for
consistency.
Cleanup of multiline initializations
Rename *.cpp -> *.cc and *.hpp -> *.h

Much more natural file extensions for me.
tests: fix test cases for matrix inversion

With the new code for matrix inversions, we need to fix some kind of
floating point error in the test cases. This is probably due to the
nature of floating point comparison I am using.