Add Rule and new Style object

Two new classes to support newer style format. In addition, there is
some minor work on how Rule filters will look and how to covert them
from strings to real function objects.

Current implementation creates a rule Tree for each style. When then
use filter functions to match each feature. If the feature matches, then
collect that style object and look for more matches. Rules can be nested.

If the rule has no filters, then always match the against the rule
WIP
Use rules and rule matches to allow users to render a feature more then
once
Switch current implementation of style parser

This is an experiment to introduce the notion of a rule group and rule
object. Rules that have child style objects create rule groups and a
automatic child rule is created that contains the parents style
properties. This was done in order to normalize the rule.

Its a WIP.
moving some mode init to prepare for further consolidation
cleanup/moving more mode code
Support filter of rules. Support nested rules at any depth.
Add basic style that confirms to the next style format
start moving feature style parsing into modes
Look up the style width in the correct place
move feature parsing into mode classes
add unit parsing for kilometers
fix feature selection
lint
renaming render 'mode' to 'style' (WIP)
rename Style to StyleParser (WIP)
moving style file
fix tests
Merge branch 'master' into mode-reorg
RenderMode -> Style