I am using 4.7.13 on two different sites. On one site, when I update the class and refresh my custom report, all of the changes are visible. On the other site when I do the same thing, the changes are not visible. Even stranger, when I delete the class (i.e., the PHP file), the report is still visible in its old form. I have tried 'flush all cache' and searching for any other cached versions without success. Since this works on one site but not the other I suspect there is some configuration setting that I am missing somewhere.
It sounds like you may have an override file in place. Check Administer » System Settings » Directories to get the custom PHP path, then look in the appropriate subfolder (if it exists) for an override file.
Issue was traced to opcache, which was running on one site, but not the other. Followed the instructions here (ma.ttias.be/how-to-clear-php-opcache) to clear the cache and that resolved the problem.
One word - pseudoconstants. Put clear_cache=1 in a call in the CiviAPI and see what happens.