John MacGregor (soldat)