Another optimization: parameterless macros grab nothing in the input.
Optimize scan_toks with no expansion: simply grab a whole tl.
Fix showthe
Let's also ignore the generated sty and pdf
Parameters of a \def now stop at an _explicit_ begin-group character.
Use new left_item features of gtl to speed up fetching definitions.

Also introduce a test for protected commands (which do not expand
in edef nor at the start of an alignment cell), since it comes up
in two places.
The defining code is now in a tl rather than a gtl.

Non-expanding definitions are grabbed in one go as a balanced text.
Expanding definitions are grabbed one token at a time, but braces
can safely be replaced by the appropriate iffalse construction to
become balanced.
Within expanding definitions, the prev_input needs not be a gtl.

The prev_input now is almost always a tl.  Exceptions: within
the arguments of message, mark, and other expanding primitives,
and when scanning keywords, where letters may come with arbitrary
catcodes and may not be normalized until the whole keyword is read.
Optimization of x groups: new input level for probable contents.
Replace all '\BOOM' by proper error messages (or remove them).
Update the doc a bit.
Grab arguments of simple macros, rather than flattening the input.
Wrong variable used when testing for setbox special case.
Simplify setbox by putting it together with the prefixes.
Thanks to the new improvements 20min => 10min.  Also tweak a message.
Avoid infinite loop at '\end'.  Fix a bug in hooking to \everhbox.
Make all lines of code fit into the pdf's margins.