BMesh polygons with holes
Polygons in Mesh or BMesh aren't permitted to have holes in the sense of providing a perimeter and adding an internal part to subtract. This means considering alternatives.


You can construct an irregular polygon / Ngon.




But it will contain at least two duplicated vertices for that pathway between the cutout and the perimeter. 


You could script a mesh.fill(), which could take two given edge outlines and fill from the outer edges inwards. (will add script when I have time)





Alternatively you might use a counter intuitive solution namely a 2D Curve (of straight parts) : code included in link