The interface for a basic, incrementally rendered application with the possibility for a mutable model.

`module Model : sig ... end`
`module State : sig ... end`
`module Model_summary : sig ... end`

`Model_summary` allows you to make the `Model` be mutable, but persist the necessary information to discover edge transitions in `on_display`. The old model is persisted as a summary after stabilization and is passed to the next invocation of `on_display`

`module Action : sig ... end`
`val apply_action : Action.t ‑> Model.t ‑> State.t ‑> Model.t`
`val update_visibility : Model.t ‑> Model.t`
`val view : Model.t Incr_dom.Incr.t ‑> inject:(Action.t ‑> Virtual_dom.Vdom.Event.t) ‑> Virtual_dom.Vdom.Node.t Incr_dom.Incr.t`
`val on_startup : schedule:(Action.t ‑> unit) ‑> Model.t ‑> State.t Async_kernel.Deferred.t`
`val on_display : old:Model_summary.t ‑> Model.t ‑> State.t ‑> unit`