Added "immediate" functionality to surface: allows for direct drawing operations on the surface object without the user creating a path object. Implemented as a path_factory obtained by surface::immediate() which is used whenever any of the *_immediate drawing operations is called on surface, e.g. surface::fill_immediate. Moved native path creation from surface::set_path to the path constructor. Added surface::*_immediate observers but they are not implemented yet. Added variants of all of the draw functions that take a pattern so that you can just call them without calling set_pattern first. The path constructor now requires a surface object in order to allow for device-specific native path resources to be created by the constructor. Move _Almost_equal_relative from path_factory.cpp to xio2dhelpers.h and fixed some other issues in that file. Renamed matrix.cpp to matrix_2d.cpp in keeping with the current file naming scheme. Fixed a bug with surface::save and surface::restore wherein they weren't properly saving and restoring all of the surface object's observable state. Added a couple of examples to sample_draw.