Cleanup: refactored boilerplate code into `ModelFormMixin`
Cleanup: use `getResource()` consistently
Cleanup: removed dead code
ModelFormMixin: don't store initial values as state

This state is not used for rendering, and can simply be cached in the
component object.
Cleanup: use `transferPropsTo()` to reduce boilerplate
Modal: added `propTypes`
Lightbox: removed extra layer of indirection

For a modal, simply use `<Modal />`. Other types of lightboxes will build
on top of this, and there's no need to add an extra layer.
Lightbox: slightly lighter close button
Modal: renamed props for clearer semantics
Lightbox: removed redundant title
Lightbox: don't handle `isOpen` state

There's no need for state here, the parent components should decide on
their own when to render the lightbox.