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
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
ImagePicker needs WRITE_EXTERNAL_STORAGE permission.

On some devices this permission is required to write the sdcard.

Change-Id: I50d2eb4a8b89cf08701ccd29c4f6582f032ab72c
Fixed the Twitter component to work with Camera.

Didn't before, seemed like Camera outputs a filepath
that begins with file:// while ImagePicker does not.

i.e, Camera -> file:///storage/0/emulated/foo.jpg
     ImagePicker -> /storage/0/emulated/bar.jpg

Change-Id: Ia43ba9b22fbfdbf5205aa86122f43c19b25f2d67
New Version of Companion with Settings Menu.

This version has a settings menu that permits you to set the location
of the rendezvous server. It can also be specified in the connection
box by preceding the code with the server address/hostname and ";" as
in:

  rendezvous.example.com;mycode

Change-Id: If403aa87de608dc5d84b85d0dd26a599945b1f2b
Added ability to export project while you're working on it in the designer
view.

Change-Id: Id29478bfb1a5d9d3ef7d52ff3fc71de03d16af05
Add Rendezvous Server settings to service.

Permit location of the rendezvous service to be specified in system
properties (which can be set in appengine-web.xml for App Engine
version).

Create new system “Config” record that is fetched at Ode start
time via the userInfoProvider.getSystemConfig() call. This call
provides both the User object as well as system configuration. For now
this includes the location of the Rendezvous server. Note: This call
replaces the call to getUserInformation().

Change-Id: Ie95fca453288c2d02223d6b99ce3879301a870eb
Fix videiplayer documentation to not say that it supports WMV format.

Change-Id: Ib6c070d59b6f718c2cd79c7d2d3a2aad77aec049
Internationalization for AI2

Added Internationalization support
Added/Modified renaming of procedures so they work with internationalization

Note: Commented out language menu until we have a clean Chinese translation.

Change-Id: I951fe7ac29c58153f7d98b8c7f9abc92bfda946d