PageRecord is to represent an editable page on the wiki. It roughly corresponds to a row in the page table. It is intended to replace many usages of WikiPage.
To allow for an easy transition from WikiPage to PageRecord, PageRecord has to be allowed to represent a non-existintg page initially. We introduce ExistingPageRecord as a derived interface with the added guarantee that the page exists. ExistingPageRecord will be implemented by the PageRecordValue class. Once WikiPage has been removed, we can guaranteed that a PageRecord always exists, and make ExisingPageRecord an alias for PageRecord. This strategy is similar to how we are introducing PageIdentity with weak guarantees that are compatible with the behavior of Title, and provide ProperPageIdentity as a temporary stronger version of the interface.
PageRecord shall extend ProperPageIdentity, and ExistingPageRecord shall extend PageRecord. PageRecordValue shall extend PageIdentityValue.