Split ranges along accounting and zone configuration prefix boundaries.

Each store registers a gossip callback for accounting and zone config
maps. On callback, the zone does a binary search using the rangesByKey
sorted slice to find possible ranges which might be intersected by
config map prefixes. On possible hits, the range is dissected along
prefix boundary lines and if there's a necessary split, the range is
split and the process retried.

This allows new zones or accounting prefixes to be specified and ranges
will automatically be split to fit.
PrefixConfigs with Canonical != Prefix are ones which are added to mark the end of a prefix range. I removed this wrinkle of complexity and made the algorithm below in NewPrefixConfigMap more understandable (I hope). This prefix range code is subtle.