Add ability to project enumerables in linq without parent (NH-2986, NH-3052)

Sample query:

    var timesheets = db.Timesheets
	.Select(o =>
            new
                {
                    Users = o.Users.Select(x => x)
                })
    .ToList();
Remove code duplication in NestedSelectRewriter
Implemented NH-3333

Very big kudos go to Dmitry Naumov for his help
Add more tests for NH-3333
Refactoring
Add support for multi-collection projections
Ported back support for collection projections (NH-2986, NH-3052, NH-3333)
Merge branch '3.3.x'
Improve Tuple equality

Let's make clear statement that Tuple can't have null Items and Items
can't change (as well as Tuple's hash code)
Fix ProjectionsTests on Oracle and PostgreSQL
Merge branch '3.3.x'
Improve ResultTransformer performance (NH-3382)
StringHelper - add method Join which operates with generic IEnumerable<T>
Add test with criteria for NH-3074
Fix usage of parent class properties in ComponentAsId (NH-3105)
Merge branch '3.3.x'
Remove code duplication in unwrapping nullable types