Added a surface_pattern_factory type. Added pattern_type::surface enumerator. Modified image_surface so that it no longer does any of its own memory management. image_surface::set_data now takes a const data vector. image_surface::get_data is no longer a const function since it needs to flush the surface before it can get the data. Fixed up some improper friend statements. Added _Surface_create_image_surface_copy helper function. (Note: In the previous commit, the /MP compiler switch was added for Release configuration compilation in Visual Studio).