Low-level AttachGraph method

Traverses a graph and provides a callback for each entry visited. See #1229

No async version yet, and no higher-level overloads.
Adding sugar to get associated navigations from foreign key.
Fixing some issues with self referencing relationships.

Fixes #1225