implement join rewriting inside of visit_select().  Currently this is global or not based on fixing nested_join_translation as True or not.
getting things to join without subqueries, but some glitches in the compiler step
when we do query.count() are showing
- figured out what the from_self() thing was about, part of query.statement, but would
like to improve upon query.statement needing to do this
working through tests....
- pulling out more aliases, sort of
OK this is the broken version, need to think a lot more about this
capture the really hard one in a test (hooray)
rewriting scheme now works.
and this comment
here's the flat join thing.  it just works.   Changing the existing compiled SQL assertions
might even be most of the tests we need (though dedicated sql tests would be needed anyway)
- eager loads
- two suite of SQL assertions converted
- improve overlapping selectables, apply to both query and relationship
- clean up inspect() calls within query._join()
- make sure join.alias(flat) propagates
- fix almost all assertion tests
- add a flag to DefaultDialect for this so that people will have some
workaround
clean up the dialect selection thing here
repair these tests now that we allow join from selectable to fromgrouping
- support for a__b_dc, i.e. two levels of nesting
- if the select() does not have use_labels on, then we just render
the joins as is, regardless of the dialect not supporting it.  use_labels=True
indicates a higher level of automation and also can maintain the labels
between rewritten and not.  use_labels=False indicates a manual use case.
callcounts
- add coverage for result map rewriting
- fix the result map rewriter for col mismatches, since the rewritten
select at the moment typically has more columns than the original
Merge branch 'ticket_2587'

Conflicts:
	test/profiles.txt
	test/sql/test_selectable.py