Internationalized version of App Inventor 2

Change-Id: Ia212bf2692785d018c5272fcefe8204319ea7c35
Changed all traditional Chinese to simplified

Change-Id: I4c20b19fc154fe873735f474903cfb066652bf57
Modified legal identifiers to support i8n. Now allows Chinese identifiers.

Change-Id: Iaf9c17d3cc7fa61bc003251a6be3e84913392f9b
Internationalize replmgr.js. Only English messages are in this commit.

Change-Id: I75bd3b8a1facb0388385f101a118173ae147d598
property, methods, events, parameters maps all referring to OdeMessages. No longer loading maps at beginning

Change-Id: I2a38236f995936a95e17e8609c19014169915d4b
internationalized type blocks

Change-Id: Ieac832c9813f11f6c82d4bc470de0976644db082
Changed locale from zh_TW to zh_CN
Cleaned up BlocksEditor msg directory

Change-Id: Idb011f588f285bd5813c34d2ce96d9cb80c63d13
localized ode.java dialogs

Change-Id: I51ce795925ee542efe5e9a9d92e2a116e14d35cb
Added language menu to toptoolbar

Change-Id: I2aa2e1ab5b15a58adf85561a9e9eaa6a2b507ddc
Event parameter renaming in internationalization

Patch Set 2 notes:
* In language_switch.js, commented out console.log calls that were
  preventing code generation tests from passing.
* In lexical-variables.js:
  + In local_variable_statement.renameFree, changed buggy nondestructive
    bodyFreeVars.difference(localNameSet) to correct destructive
    bodyFreeVars.subtract(localNameSet).
  + In lexical_variable_set, fixed incorrect typeblock

Patch Set 1 notes:

This commit makes several substantial additions/changes to the
ai2inter branch, but almost all should be merged into master as well.

* The renaming code in blocklyeditor/src/field_lexical_variable.js has
  been substantially cleaned up and generalized. When renaming a
  parameter from and old name to a new name would naively lead to
  variable capture involving the new name, there is now a choice
  between (Strategy1) changing the new name to avoid capture and
  (Strategy2) renaming internally declared variables to avoid capture
  of the new name. The latter strategy is essential in cases like
  renaming an event parameter, where there is no option of changing
  the new name.

* Strategy2 is implemented by methods renameBound, renameFree, and
  freeVariables defined on blocks involving variable declarations or
  references. These are implemented in terms of two new kinds of
  objects: NameSet (defined in blocklyeditor/src/nameSet.js) and
  Substitution (defined in blocklyeditor/src/substitution.js)

* This code correctly handles the renaming of event parameters when
  switching languages in internationalization. So if a Canvas.Dragged
  block is changed to Chinese, not only will the declaration of
  "startX" change to the Chinese equivalent, but all references to
  "startX" will change appropriately as well. It even correctly
  handles the case where a local English variable "startX" is
  introduced between the Chinese declaration and uses of "startX".

  All of this magic requires (1) XML mutation attributes "eventparam"
  for getters and setters of event parameters and (2) a special case
  for blocks of type component_event in Blockly.Xml.domToBlock that
  does the appropriate renaming. sh

* In various blocks definition, the category field was changed from
  abstract categories like Blockly.Msg.LANG_CATEGORY_LOGIC to concrete
  ones like 'Logic'. The abstract versions DO NOT WORK in the current
  system.

Change-Id: Iee8f291181cf164e17d32b280f7eaaef6ea77f43
These "localized" operations are used in the internationalization code
They are provided by the browser in the actual system, but
are not present in phantomJS.  So define mock versions to be used by the tests.

Change-Id: I5f68ed5cfa26d497b4628ca1869460d3e832229c
Don’t connect devices/emulator without a Project.

If someone attempts to connect to a device or the emulator while they
have no project selected (most often a new user who has yet to create
a project), provide a dialog box explaining that a project is required
before a connection can be made.

Change-Id: Iff102f8f74f9bd3284c348541969c30889f39b58
Adds support for building apps on API Level 4

   - Increases minSDK to 4 in Compiler.java (takes App Inventor out of
     screen compatibility mode).
   - Adds a checkbox to preview the app on tablet or phone size.
   - Adds correction for resolution of images depending on density of
     device
   - changes pixels for DPs
   - Adds scaleToFit property to Image component

Change-Id: I2938a2254f59eb534785afd37ec8891d9148e190
Companion Upgrades and Cleanup

Arrange for the Companion, when used via the Emulator or USB to be
re-entrant. Now if the Companion is running and a person reloads their
browser, they can reconnect without restarting the Companion.

Removed the “aiphoneapp” (the old USB Repl from AI1). Removed vestiges
of AI1 from the Companion App. Rename some variables to be more
descriptive as well. Cleanup some logging to use Log.d instead of
calling System.err.println(). By using Log.d, we ensure that
information sent to the log is available in the ACRA data.

Change-Id: Ib462fe96aefd0f35af5595e4b3e9b0aba1980634
Fixes incorrect Sensors Documentation url

Change-Id: Id25c0ad7c14eba12a301dfd8ee9d0a56bb3431ba
Allow for line breaks in the AboutScreen string

Change-Id: I2ad4e7c63f10e03ef092b49cfc01f57726c9d5ca
Fix launch-buildserver script based on production feedback.

Change-Id: I4873bc9d7bb0ab2ac97dabf81865a0486691ba1c
Changes Screen.Scrollable property to False by default

Change-Id: I1acca74b52aa8ee6d6543e5124fd563af5d57a17
Link Bethny's report into the reference docs

Change-Id: Ia4f3627f2e5ad1b9ba08d6c79b1a85b0dae35c7c
Patch notifier so that alerts don't drop parts of messages

Change-Id: Id0169c754ecd98bfd92de328ae72990b608ec17b