Backported Add support for left outer join via navigation property (NH-2379), Add support for additional restrictions in nested selects and left outer joins (NH-3175) and NH-3459 Added support of Left Outer Joins with DefaultIfEmpty() in conjunction with group by.

(cherry picked from commits 35f3f20e7b8ea0ebd9a80131c41e33552f5e1485, 85fbbb046fc6bc25406ff3dac4a74c372d1f6e5f, 7d8d59f14a28c87525b793ecc3d0634fa42a2d52 and 8c6bc18385b68b89800417f9237fe4b805305f9a)