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
Sure, this was actually just a one step refactor.  I had to scope the entire thing under the `Globalize.with_locale(slug_locale)` block because we're using `self_and_ancestors` instead of recursively calling the `nested_url` method on all parents.