IO: made StreamContext::write_char() return 0 instead of replacement on invalid encoding.
Bunch'a cleanup; see full commit message.

Soft 80-/90-column wrapping.

doc: pedantry, miscellanea; workarounds for name groups not appearing
when including only classes (thanks a lot, Doxygen).
(NB: Doxygen 1.8.3.1 seems to have a defect: it appears to be
ignoring the `@cond`s for internal stuff.)

Using NSDMI, for-range, aggregate initialization, noexcept,
and override.
(NB: Not using `final` because Doxygen somehow manages to turn
the classes into "exceptions". It never ceases to amaze.)

Normalized template parameter names; pushed multi-parameter templates
over multiple lines.

Explicitly expressing available special member functions (ctors and
assignment operators).

Made most free-standing functions inline; removed inline from member
funcs (they are inline by default: §7.1.2, para. 3).

Truncated iterator typenames in templates.

EncodingUtils: replaced InputIt with RandomAccessIt (use violations);
using stdlib iterator utilities.

ScriptParserException: deleted copy ctor and copy assignment
operator.

Added traits header; deprecated DISALLOW macros.

Changed implementation globals prefix from `s_` to `g_`.

Using plain unsigned and signed instead of unsigned int and int.