implement Notebook Namespaces (Issue #89)

This work followed the proposal closely: the notebook data model is optionally extended with a section containing a namespace (dictionary) of JSON values.  The names are restricted to safe identifiers (alphanumeric plus underscore, sans initial digit). The server exports new REST endpoints for manipulating these values.  Each Plugin language is extended with a module ("beaker") that exports functions to do the work.  The module is initialized by the plugin JS, and the session ID is provided to it.  The plugin code uses HTTP to communicate with the REST endpoints on the Core server (session must be provided to each call to specify which notebook it refers to).  The implementation in the core server uses Comet to access the namespace on the client where the notebook lives.  Since comet is a one-way protocol, in order to get data back from the client we use a SynchronousQueue to get the reply to the right place, crossing threads.

The functions that are exported are:

    set(var, val)
    set_fast(var, val) # set and return without waiting for write to complete
    unset(var) # remove from the namespace
    get(var) # and return it

Includes implementations for Python, R, Groovy, and Javascript.

I updated the Tutorial notebook to demonstrate the use of this feature, and especially used it to simplify the final d3.js example.

Remaining to do:
  * more languages
  * make user-extensible types
  * identify dataframes (and other types) automatically.  right now in python you have to call a constructor to convert the json.

In addition, I discovered a few files were missing the copyright/license banner or had incorrect copyright banners.  These are fixed.