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