allow crosstile labels and add `symbol-avoid-edges`

This allows labels to cross tile boundaries if they are point labels and if `"symbol-avoid-edges": true` is not set. More details in https://github.com/mapbox/mapbox-gl-style-spec/pull/141.

in -js: https://github.com/mapbox/mapbox-gl-js/pull/688

@kkaefer 
I moved this header to the implementation file due to long compile times (that's why hTree/cTree are void pointers). When we move this back to the header file, we should change the `hTree`/`cTree` members to be non-pointers too.