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.
Merge remote-tracking branch 'upstream/development' into development