Group Symbolizer

This pull request contains a new symbolizer, along with its implementation in each of the renderers.

The purpose of group symbolizer is to place multiple road shields or other labels grouped as single point placements on a feature. The individual labels in the group get positioned automatically by a group layout defined within the symbolizer. Multiple labels can be represented on a single feature using numbered column names. These numbered columns are matched to a single set of rules within the group symbolizer. This single set of style rules greatly simplifies the style definition needed to represent many different combinations of shields or labels.

For example:

```xml
<GroupSymbolizer num-columns="2">
    <SimpleLayout />
    <GroupRule>
        <Filter>[ref%].match('US ')</Filter>
        <PointSymbolizer file="us-shield.png"/>
        <TextSymbolizer>[num%]</TextSymbolizer>
    </GroupRule>
    <GroupRule>
        <Filter>[ref%].match('I ')</Filter>
        <PointSymbolizer file="interstate-shield.png"/>
        <TextSymbolizer>[num%]</TextSymbolizer>
    </GroupRule>
</GroupSymbolizer>
```
The above group symbolizer definition specifies two sets of columns per feature, and it references [ref%] and [num%] within its rules and symbolizers. As a result, the group symbolizer will look for column the following columns: [ref1], [num1], [ref2], and [num2]. Each set of columns will be matched to the rules separately. The default simple layout that is defined will arrange each of these labels in a horizontal row, centered on the placement point.

Currently, group symbolizer supports point, text, and shield symbolizers within the group rules. This could possibly be extended to include markers symbolizer. Group symbolizer is not designed to work with other symbolizers that are not label related.

Documentation on GroupSymbolizer can be found here: https://github.com/MapQuest/mapnik/wiki/GroupSymbolizer