doc: shuffled doc-groups, added doc-group stubs.
tty::Terminal: corrected output behavior; misc fixes & restructuring.

tty::Terminal:
	corrected streambuf_out slide/reset after flushing output¹;
	strengthened error handling in init();
	corrected (de)init behavior to more properly retain/replace terminal state;
	tcsetattr CLOCAL on tty in init() (yay pedantry);
	limit IO retries to 1;
	moved caching to update_cache() to avoid reinit costs;
	added input polling rudiments;
	renamed CapCache::cursor_visible to cursor_normal to match CapString;
	moveable_{i,o}stream: set_rdbuf(nullptr) after move.

tty::Event: made into a struct; added type property (again..).

1: Oops. Buffer was just growing and growing and growing and outputting
the entire buffer in flush() when the write succeeded (which it does,
the majority of the time).
Completed input polling; see full commit message.

Moved KeyMod and KeyCode to keys.hpp.

tty::Sequence:
	defaulted mctor and move-assign operator;
	made data ctors constexpr;
	made all special member functions noexcept.

tty::UTF8Block: made all special member functions noexcept.

tty::Event: moved cp field to end of key_input.

tty::Terminal:
	completed input polling;
	moved add_key_cap() and decode_key() to terminal_internals;
	added non-cap string-based key mapping;
	added input_timeout to poll();
	handle SIGWINCH interrupt in poll_input();
	disabled signal generation (ISIG);
	completely reset ev_pending at init() an deinit();
	removed some already-completed TODOs.

test/tty/hello: added input logging; handle ^C.
premake_common: added -Wundef to beard-strict.