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).