Right, I'm now 99% sure it's the thermostat, here's why:
I rest the MIL last night and all was fine when I got in the car this morning, drove around 15 miles and all was fine, then the MIL came on. I pulled over immediately and got out my fault code reader. Sure enough it was the same P0115 code as before, I checked the live data readings the engine coolant temperature (ECT) was 38 degrees and the temp gauge in the car was at the bottom. I left the car idling for 5 minutes and the ECT climbed to 60 degrees, I reset the MIL. At this point the interior gauge started to register 55-60 so that works.
I set off on my journey again but this time with the live data feed running on my reader and after about 1/2 mile the ECT had dropped from 60 degrees to 44 degrees. I carried on, then when I got another mile down the road the MIL came on when the ECT hit exactly 39 degrees. I carried on and reset the light and it only came on again when the temp dropped to 39 degrees again.
I got to my destination after another 10 miles and left the engine idling to pick up temperature and reset the light.
So my conclusion is, the thermostat is certainly broken, probably stuck open so it's permanently cooling the engine and not letting it heat up properly. Also the MIL is triggered when the ECT falls to below 40 degrees while the car is running/in motion.