Self referential

Hello,

Had some issues with self-referential relationships, in particular the many-to-one and many-to-many queries. 

I added tests for both. 

The fixes are in
1. the `VersionExpressionReflector` (which was misbehaving in the self-referential case, it was replacing a column with a value when it shouldn't have)
2. the many-to-one query where the correlation was causing problems and
3. the many-to-many which should have used the secondaryjoin instead of custom logic.

Couldn't come up with a way to nicely inherit only the `try.. except` part from `VersionExpressionParser.column()`. Maybe all logic should be merged into a single class.