A fast semi-direct method for the numerical solution of non-separable elliptic equations in irregular domains