move the invoke-expose method for dynamic groups to dynamic-groups.lisp to avoid
a build error as stumpwm doesnt know about the dynamic group class when
compiling dynamic-window.lisp
This commit moves the logic of expose into a generic function called
invoke-expose which takes a group to call expose in. A method is provided for
tile groups, dynamic groups, and float groups. The expose command now simply
calls invoke-expose.
expose made two unconditional calls to the "only" command, which results in
spurious messages "There's only one frame." Also, it called "fselect" on only
one frame, forcing the user to select the only frame.
The new function only-one-frame-p is defined and wraps these to ensure the user
is only shown "fselect" or the error messages from "only" when it makes sense.
Fixes the bug in issue #687
The argument is defined so that user-provided hooks can play with it,
but the default function does not use it, so we can declare it as
ignored to remove the style-warning during compilation.