The Button::render function can now change the Label::back_color on call.

Because the label is sophisticated enough not the regenerate the cache
when attempting to change a Label member to the same value, we can be a lot
more liberal in changing its members in a loop for instance, where most likely
the value isn't *actually* being changed.

This also means that Button::enabled(bool) noexcept can be simplified
and inlined. It also means Button::background_color(SDL_Color) and
Button::disabled_color(SDL_Color) can be simplified.

(Also, this commit includes some general clean up of Button::render, like
comment formatting, statement order, etc.)
The Button::volume(const Volume&) now changes the Label text height unconditionally.

Because of the recent upgrade of the Label cache implementation, there
is no need to check, because a change to the same value will be detected
and silently ignored, sparing the cache.