Turn MapData into a shared value type
This makes it easier and safer to pass this through QML, and it will make it possible to expose API to QML (which we cannot do on the previous raw pointer, nor a shared pointer directly).
This makes it easier and safer to pass this through QML, and it will make it possible to expose API to QML (which we cannot do on the previous raw pointer, nor a shared pointer directly).