Refactored the 3 places composing IN expressions to use common code.

My previous pull request on this edge case only covered 1 of the 3 cases.

Added new IOrmLiteDialectProvider.EmptySetExpression property, in case specific dialects need something other than "ColumnName IN (NULL)" to represent an empty set.
Added unit test coverage for the empty collection case.