Integral Domain Theory