make most headers private

Only a small subset of headers should be publicly accessible -- those that form the public API for mapbox-gl-native. Everything else should live in `src`. Where necessary we should add forward declarations or use the pimpl idiom to hide implementation details and avoid public headers including private headers.