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.