Moved get_path, get_font_options, and get_pattern from the various factories to surface. Since surface subsumed context and these state objects would properly have been created by the context, these changes represent proper behavior. (They also allow the underlying implementation's context or device to create the underlying resource at the time of the get_* call rather than at the time of first usage (though if it is subsequently used with a different, incompatible surface then the resource would still be created for that surface at the time of first usage)). As part of implementing that, I changed mesh_pattern_factory::get_control_point and ::get_corner_color_rgba to properly use an out parameter for their point and rgba_color return values, respectively, and to return a bool which is true if a control_point/corner_color existed for the given valid index or false if no such control point/corner color existed. The old behavior incorrectly threw an exception if no control point/corner color had been set for the index which was incorrect behavior since it is valid to not set a value for those. Renamed path_builder.cpp to path_factory.cpp; I had accidentally missed that rename when the *_builder to *_factory change was implemented.