Defines an object that can observe changes to properties of
a page and its components, store the state of the page between request cycles,
and restore a page's state on a subsequent request cycle.
Concrete implementations of this can store the changes in memory,
as client-side cookies, in a flat file, or in a database.
Concrete implementations of this can store the changes in memory, as client-side cookies, in a flat file, or in a database.