Name legality bug fix and restriction; fix to horizontal -> vertical params in proc decls

Patch Set 2 Notes:
==================
* Fix bug that allowed two procedures to have the same name. Now they are renamed
  with a numeric suffix.

Patch Set 1 Notes:
==================

* Fixed bug in which procedure names were not being checked for legality.

* Made legal variable/procedure identifiers more restrictive:
     <identifier> = <first><rest>*
     <first> = letter U charsIn("_$?~@")
     <rest> = <first> U digit

  Note: an earlier verison also allowed characters in "!&%.^/+-*>=<",
  but we decided to remove these because (1) they may be used for arithmetic,
  logic, and selection infix operators in a future AI text language, and we don't want
  things like a+b, !c, d.e to be ambiguous between variables and other expressions.
  (2) using chars in "><&" causes HTML problems with getters/setters in flydown menu.

* Fixed bug in which changing parameter orientation from horizontal to vertical
  in a procedure declaration didn't render the body slot properly.

Change-Id: I6eb9c5577c3bec1710980b133a4259705f322878