Changed name of matrix type to matrix_2d.
API changes to return more things by value where it was practical to do so and to make the API more const-correct.
Further adoption of C++-style value returns. More functions marked const. Elimination of accidental inclusion of Windows.h header in sample_draw.cpp.
Removed most transformation functions from surface class; they add implementation bloat and just duplicate functionality that matrix_2d already provides without any clear benefit to the user. Made the surface::set_font_face function take a const font_face& instead of a font_face& since there should be no observable change to the font_face object by virtue of setting it on the surface.
Fixed the pattern_builder factories so that in case of an error they wouldn't leak resources. Included a radial gradient pattern in the sample.