sites: use an abstract Page interface instead of forcing concrete Pages.Page
pages: add a basic implementation of Sites.Page interface