Update widget serializer/unserializer to allow custom serialization on a trait-by-trait basis.

Serializers/unserializers are given as the trait metadata keys `to_json` and `from_json`.
Give subclasses of the Instance traitlet the option of overriding the klass variable to have a default klass.

This makes it easy to construct traitlets for specific object types and default metadata.  For example, we can have a traitlet for numpy arrays that gives default values for `to_json` and `from_json`:

```python
def np_to_list(a):
    if a is not None:
        return a.tolist()
def np_from_list(a):
    if a is not None:
        return np.array(a)

class NDArray(Instance):
    klass = np.ndarray
    metadata = {'to_json': np_to_list,
                'from_json': np_from_list}
```

Then the NDArray traitlet will by default have the klass and some custom metadata.
Prepend a sentinel value to model ids to distinguish them from normal UUIDs (from Sylvain Corlay).
Change serialization terminology to serialize/deserialize
once-displayed
unnecessary context variable specify
incorrect comment
Upgrade less and generate sourcemap files
add comments for style blocks in less

separates each component into individual line in compiled css,
reducing some churn in minified css files.
abstract hard-coded style values to be variables for different theming
Compile less files
Simplify the code for picking json serialization functions to expose the logic better
Update whatsnew from PR files
Set default rst role to literal
add bootstrap shim for require

it was possible for bootstrap js to load before jquery,
causing failures in the dashboard.
Merge pull request #6190 from minrk/bootstrap-shim

add bootstrap shim for require
Merge pull request #6149 from jasongrout/less-upgrade

Less upgrade
Merge pull request #6183 from takluyver/pr-whatsnew-6

Update whatsnew and set rst default role
Tests for the default klass attribute of the Instance traitlet
Change serialize/deserialize to to_json/from_json