set tileset when looking up a tile
this avoids creating a copy of the tileset on every tile beforehand, but
makes a shallow copy when looking up a tile.
this is a breaking change as we now return the Tile and Tileset in a
result struct instead of the Tile itself...which typing that out I don't
know if I like