Load the blocks file after the .scm file is loaded

Change-Id: Ic4effb8a76ba6d5db013a54d68ae16131c346735
Changed connect menuitems names to AI Companion, Emulator and USB
Changed Gallary link to show up only when logged in as admin.

Change-Id: Ibc7210806ffdb6397140fe0a9f5410e1ce67a952
Name restrictions on local, global, and procedure names.

* Changed local, global, and procedure parameters to check that
  all satisfy the following regular grammar:

     <identifier> = <first><rest>*
     <first> = letter U charactersIn("_!$%&?^*~/+-.@>=<")
     <rest> = <first> U digit

  This is a simplified version of Kawa's identifiers. I don't see why we
  care about Java's identifiers, since only Kawa's are being used for
  global/local/procedure namespaces in runtime.scm.

  This grammar cheats a little -- any of the special characters in
  "+-.@" aren't allowed to start an identifier but can be anywhere
  else in the identifier. So the strategy is to add a legal prefix to
  any AI2 name to make it a legal Kawa name.

* Before doing the above check, user identifiers are first transformed
  by removing leading and trailing spaces and replacing nonempty sequences
  of internal spaces by an underscore ('_').

* Illegal identifiers are replaced by an identifiers of the form name<num>,
  where <num> is an integer > 2 or empty. One exception: the empty string
  is replaced by '_'.

* Modified the code generator to check for legality as desribed above.
  The following prefix tags are currently used (but can easily be changed):
  + local variables: $ (e.g. "sum" => "$sum")
  + global variables: g$ (e.g., "count" => "g$count")
  + procedure names: p$ (e.g., "factorial" => "p$factorial")

Change-Id: I3b5de2c3a7569a50c027cf062029d97542452aad