Lightbox: warn if no closing function has been provided
Lightbox: added Dialog component

Fixes #275.
Lightbox: allow stacking different types of boxes

Reusing the `<Modal />` component would cause trouble otherwise, since the
event listeners would be (un)registered for every single component.
Lightbox: keep track of previously-focused elements

Allows restoring the focus once a component has been unmounted.
Lightbox: don't let the focus go out of the box

Makes tab-based navigation behave as users would expect.
Cleanup: no actual need for button type
Cleanup: no need for `preventDefault()`
Lightbox: prevented passing the `window` object to `.contains()`
User profile: confirm to discard changes before quitting

Fixes #243.