Separating Character from Map in RPG library-Collection of common programming errors
First part:
Depends. One cannot answer this with a certainty without seeing some design documents for games you want people to be able to realise with your library. If you want inspiration, Roguelike-Utils has a global World object that the dependent bits are dangling off.
Second part:
Make the tile an object. The graphical aspect is but one attribute. You know you are doing this correctly when you have decoupled it enough to pass tiles and other stuff off to different renderers resulting in a (scalable or bitmap) graphic, roguelike ANSI terminal output or even a text description like ADVENT.
Since an object encapsulates not only dumb data (appearance), but also associates behaviour with it, you can easily extend the tile system with fluid dynamics or temperature interaction.