This avoids us having to define extra wrappers.
The exceptions to this are `mutable_path` and `my_realm` which are
defined in classes which don't inherit from `AbstractCanvasMixin` and
thus still require a wrapper.
Previously we would static cast to the `IncludingClass` and access the
underlying state through methods exposed there, now we have an abstract
base class for the mixins. This removes some boilerplate and template
shennanigans.