Add support for per-class view-context-preservation

The `VIEW_PRESERVES_CONTEXT` flag is global, which makes it difficult to
upgrade a large application. This adds support for view classes to
define a class-level `preservesContext` property that overrides the
flag. It also adds a new value for the flag, "warn", which will warn for
any view that *doesn't* declare that it preserves context. If
`VIEW_PRESERVES_CONTEXT` is `true`, it cannot be overridden.