The overlap detection part is based on the code written by Mack Stone. This python implementation works incredibly fast even on dense meshes (unlike more popular CalcUVStats by Guido Neumann). I found the code for flipped uvs detection in CGSociety post by TITANius and modified it to fit my needs.
Just select one or multiple meshes and run script, and it will check all UVs in all UV sets of all selected meshes and give you a report. If problems found you can then select either flipped uv faces or overlapped ones.