Improve painting logic of MapInterface


The MapInterface control needs to be smarter about how it draws itself. Currently, it redraws the entire control whenever any update is made, which might cause slowness on some users' computers. It should be improved so that when the control needs repainting it should only repaint the tile(s) that have changed. This would vastly improve speed especially with large maps loaded on high-resolution settings, where there are thousands of tiles displayed on the screen at once.