Move the `transforms.transit` normalization just before the socket send.

Parameter and result values need to be normalized before they are
converted to JSON and sent to the reflector. Specifically, Array-like
objects must be converted to Arrays so that they pass through JSON
serialization and deserialization properly.

Actions initiated by views and sent using `kernel.send` weren't being
normalized this way.

This commit moves normalization into `kernel.send` and `kernel.respond`
to ensure that it is applied consistently for each outgoing message.
Other `transforms.transit` normalizations done in anticipation of the
result being sent to the reflector are redundant and have been removed.

The patch to explicitly convert array-likes to arrays in view/threejs is
now also redundant and has been removed.

Fixes #2666.
Alters marbles material definitions in the YAML so that they properly
identify materials in the collada model files.

Fixes #2672.
Add additional mod to Rob's Asset Cache Material Clone fix (315ca5ff079043e4f658946952d7bf136b34b217).  Fixes #2617
Use SSL WebSockets for SSL applications. Fixes #2674.
Select the correct socket.io port when the application uses the default.

References #2674.
Accept a single item in addition to an array for behaviors and scripts.

Allows the JSON or YAML:

  {
    implements: [ "behavior.vwf" ],
    scripts: [ "this.hello();" ]
  }

  ---
  implements:
  - behavior.vwf
  scripts:
  - |
    this.hello();

to reduce to:

  {
    implements: "behavior.vwf",
    scripts: "this.hello();"
  }

  ---
  implements:
    behavior.vwf
  scripts: |
    this.hello();

Closes #173.
Process scripts in a separate async block.

This is in preparation for loading scripts from external resources,
which will be an async operation.
Load scripts from external URIs.

Now supports:

  ---
  scripts:
  # Inline (existing functionality)
  - |
    this.initialize = function() { ... } // as a string
  - text: |
      this.initialize = function() { ... } // with explicit text/type id
	type:
	  application/javascript
  # External
  - source: script1.js  # loaded from script1.js
  - source: script2.js  # from script2.js, with explicit type
    type: application/javascript

  ---
  scripts:
    source: script.js  # single script

  ---
  scripts:
    source: script.js  # single script with explicit type
    type: application/javascript
Kernel reentry should be off for deferred properties too.
Add automatic generation of not yet represented materials to the
threejs node creation process. Updates the material name to material
matching system to support potential 'multiple identical yet distinct'
materials.

Fixes #2159.
Modifies CloneMaterial to take into account the difference between
THREE.Material and THREE.MeshFaceMaterial.

Fixes #2677.
Adds a isIdentityMatrix function, which was previously called
despite not existing.

Fixes #1927.
Fixes bug in GetAllMaterials helper function which broke materials
in some models for GetMaterials.

Fixes #2681.
Add drag touch gesture to emulate fly behavior.

Add ability to switch camera.touchmode to "orbit" or "none" as well. Orbit is minimally supported, but needs work.

Remove hmmwv-touch application.

Fixes #2604.
Load the application chrome from view/document instead of the kernel.

- Test for the application explicitly rather than using the kernel's
  heuristic. Prevents attempting to load *component*.vwf.html for
  components referenced by the application.

- Suspend loading the application while the chrome document loads.
  Synthesize a `createdNode` call for the application node when the
  chrome provides a `createdNode` handler. Allows the chrome's
  `vwf_view` handlers to observe all of the actions for the
  document--not just the ones that occur after the chrome happens to
  load.

Closes #188.
Load the application chrome as a service instead of a file.

Instead of having the client parse the URL and guess at the application
name, load the `application.vwf.html` overlay using a fixed path
relative to the application root.

Since applications aren't required to provide an overlay, return an
empty result with status code 200 when the overlay doesn't exist.
Otherwise, the log will show an error for a condition that isn't really
an error.

Closes #741.
Removes visibility fix for user navigation visible property
propogation issues since visible property propogation issues have
been eliminated due to previous changes.

Fixes #2644.
Merge remote-tracking branch 'upstream/development' into development