To project not only Tiles, but also Metadata (M) information
and to get a consistent result type, it is possible
to define additional constraints on Metadata. M should
depend on a K type (M[K]), and two type classes should
be provided: geotrellis.util.Component, to extract key bounds
from M[K], and geotrellis.util.Functor to map
M[K] to M[SpatialKey].