DiskController: Encapsulate calls to the Core's callbacks

Encapsulate calls to the Core's callbacks to avoid letting the callbacks
to try to access an unset callback data.
DiskController: Make the interface public
Core: Make unload_game() public
Rename DiskController as DiskControl, change the interface