docs: ITileDataSink
add some pmd rules
Extracts configurable networking layer.

* Extracts HttpEngine interface.
* Uses LwHttp as default networking client.
* Implements alternate networking client using OkHttp.
Tests OkHttp integration
create HttpEngine instances for each loader thread
some modification suggested by pmd:

- move fields before method
- chain StringBuilder appends
move tests to separate project
Fixes HttpEngine tests
api: UrlTileSource

- use replacement string for tilePath
- move 'low-level' formatTilePath to LwHttp
- implement LwHttpFactory
gradle: make okhttp optional
fix: HttpEngine tests
gwt: update UrlTileSource
add getter for split tilePath
LwHttp: prepare tilePath as byte[]
add missing headers
api: UrlTileSource:

- add UrlTileSource.getTileUrl(Tile) to create complete url string
- add TileUrlFormatter interface to override default formatter
- remove unused return from sendRequest()
add http request options
cleanup: LwHttp
use debug log in IOUtils.closeQuietly
Merge branch 'pluggable-network-layer'