unordered_map_concurrent template.

This implements a hash map that internally splits into multiple
non-overlapping (stratified by the hash itself) bins, which allow
locking at a finer grain than a single lock around the whole map. This
makes u_m_c scale much better with many threads contending for it at
once, because as long as there are more bins than threads, multiple
threads are likely to be accessing different bins and therefore will not
block each other for access.

Though an independent implementation, this is mostly the same principle
behind Java's ConcurrentHashMap.
Use unordered_map_concurrent to improve thread performance of tile cache.

This drastically improves thread efficiency.  The following timings are
illustrative:

          OLD                     NEW
threads  time (s) efficiency      time  efficiency
-------- -------- ----------      ----- ----------
 1          4.30  100.0%          4.50  100.0%
 2          4.33   99.2%          4.67   96.3%
 4          4.92   87.3%          4.79   94.0%
 6          7.32   58.7%          4.77   94.5%
 8         13.70   31.4%          4.83   93.2%
10         19.94   21.5%          4.99   90.3%
12         26.25   16.4%          5.13   87.8%