If I remove ReceiveMessage from Actor.i, lots of things go wrong. 
This says, to me, that either Lua is calling ReceiveMessage from somewhere, or that it is hooking it somewhere.

if it's calling it, ReceiveMessage must be extended anywhere a derived class overrides it, or the correct method won't be called. If it overrides it or inherits it itself, it could potentially slice the object.

I thought it just better safe than sorry to include it wherever it is inherited; if you don't, then it call still be called from Lua (as it is inherited from MessageListener) it just won't be called correctly.

Better a correctly called function you shouldn't call than a function you shouldn't call, called incorrectly.