Fix rule cache

A rule cache was added as part of #916 on the style objects passed into a renderer via a map object. If you render a map at the same zoom level (but different bbox) then this rule cache can hold active rules for that zoom level across renders.

But the design is not optimal because style objects (`feature_type_style`) should not be modified during rendering and in this case the usage of `const_cast` is not ideal.

I did some quick testing of rendering osm based maps with lots of rules and did not see any measurable benefit to caching rules (likely because the benefit it small enough not to rise above the noise).

However, I like the idea of having objects to encapsulate more of the verbose code in feature_style_processor.

So, this pull keeps the idea of a `rule_cache` object but moves it to being created on the fly during rendering. In this case rules will not be cached for successive renders at the same zoom level, but I really don't think that is an important optimization. However, avoiding looping over active rules more than once during rendering makes sense and this pull implements that nicety.