add create.Cell and delete.Cell js events

The events fire after the cell has been created or deleted.

closes #3154
adjust `import_pylab`

it's all or nothing now, not all or some.
Now `pylab_import_all=False` should mean that *no* symbols are added to the user namespace.

This also removes `figsize` from the pyplot namespace, which is weird and confusing.
add `%pylab --no-import`

allows override of the import_all option when the magic is called
warn about names clobbered by `%pylab`
don't double-decorate in `flag_calls`
update pylab_import_all help string
add `%matplotlib` and `shell.enable_matplotlib`

Now `%matplotlib` / `enable_matplotlib` do the bulk of the work. `%pylab` / `enable_pylab` just add namespace population on top of that.

Related changes:

- remove `pylabtools.activate_pylab`
- shorten backend message to just `using matplotlib backend: <backend>`
- only show backend message when magics are called with `auto`,
  never from Python methods or when backend is explicit.
- pylab clobber warning is only displayed in the magic, not the Python method.
update pylabtools tests
Added writers and supporting code.
Merging done by hand
Added writer classes
Missing sys import
Fixed unicode data not written to files properly.
Catch export specific name error only
Added, can be removed later in a different PR.
base64 encode PDF before writing back to the nb structure
Make copy of notebook node object to make sure the source doesn't get modified
Fixes "bugs with mutable defaults args", thanks @Carreau
Indent fix
Explicitly set enabled=True