Redesign setting of margins, which now works per-window

`darkroom-tentative-mode' is now broken, but the rest now works
better.

* darkroom.el (darkroom-margins): New semantics for function value.
(darkroom--real-window-width): Compensate for margins that might
already be there.
(darkroom--guess-margins-statistics-cache): New variable.
(darkroom-guess-margins): Use a cache.
(darkroom--compute-margins): Take WINDOW aprameter.
(darkroom--buffer-margins): Removed.
(darkroom--set-margins): Redesigned.
(darkroom--reset-margins): New function.
(darkroom-increase-margins): Unimplement.
(darkroom--saved-variables, darkroom--saved-state): New variables.
(darkroom--turn-on): Redesign.
(darkroom--turn-off): Redesign.
(darkroom--maybe-enable): Check for `darkroom--saved-state'.