Optimised queries for Page#nested_url and Page#path

This makes use of ancestors instead of iterating through all parents.
This means one database query, not several.

We still have too many queries but this should speed things up quite a lot - which should make @simi happier.

Potentially fixes #2087
There seem to be too many reverses here. The code seems correct, but logically it's confusing to follow.