Improved handling of declarations.
1. Named function bodies in Common Lisp may contain multiple DECLARE
forms before or after the docstring (or even before *and* after).
This feature is important for meta-programming by macros, and so
PS should also support it.
2. Declarations should be allowed in PS forms whose Lisp namesakes
allow them, to wit: in the macros WITH-SLOTS, MULTIPLE-VALUE-BIND,
DO*, DO, DOTIMES, DOLIST, DESTRUCTURING-BIND, LET*, DEFUN,
DEFSETF, and in the special forms LET, FLET, LABELS (letting out
DEFMACRO, MACROLET, SYMBOL-MACROLET who are not translated to
JavaScript). Before the present commit, most of them didn't
handle declarations correctly.
3. Individual DECLARE forms should be allowed to contain multiple
declaration specifiers, in particular, multiple SPECIAL specifiers.
WITH-DECLARATION-EFFECTS used to ignore SPECIALs after the first
one.
4. This commit also introduces LOCALLY as PS form because it
simplifies the implementation of stuff from (2).