Add Ramer Douglas Peucker Algorithm to simplify_converter

This PR is meant to do exactly what is mentioned in the title. Namely there was a placeholder in the code for the RDP algorithm which allowed you to ask for that strategy but would throw an "unimplemented" exception. Since this is one of the more popular strategies for simplification and mapquest's related project mapquest/avecado is making use of these simplify_converters for vector tiles we thought we would go ahead and add this one.

Since the algorithm is not an online algorithm the first call for a vertex will run the thing in its entirety (similar to visvalingam_whyatt). Instead of constructing a new list by the general divide and conquer recursive strategy we instead mark vertices which are simplified out as we encounter them this can save on (re)allocations. This method does not use convex hulls to achieve an nlogn worst case running time (though the average case is still nlogn the worst case is n^2). It is instead the more classical implementation using recursion and list traversal.
`mapnik::geometry_type` does have a `size()` but the converters need to be able to accept any "path type" converters to enable no-copy chaining of operations. We have made exceptions for this - in the case of markers symbolizer renderering it was just too painful to not be able to call `geom.type()` to see if something was a point, but overall ideally you can avoid needing to know `.size()`.