fix payload keys

A few changes left out from PR #2854

prevented pager or set_next_input (%load) from working in the notebook.
Add key "unique" to history_request protocol
Document the key 'unique' in messaging protocol
Be explicit about default value for unique
Document version added for unique key
Merge pull request #2872 from minrk/fixpayloads

fix payload keys
Merge pull request #2792 from tkf/history-unique-protocol

Add key "unique" to history_request protocol
Dual buffer with automatic switch. No performance hit for single process.
allow utilities in test_message_spec to be reused

km can be specified, but default behavior remains the same (global KM)
add basic print tests for kernel

tests new mp.Process behavior for PR #2734
use Session to protect from fork-unsafe sockets
use zmq to protect subprocess stdout after fork
add test for raising error in forked process
play nice with py3k

python 3 doesn't seem to like the parametric,
plus a few missing print parentheses
subprocess iostreams only send on flush
cleanup unused symbols in iostream

and add docstring / copyright
resolve rebase conflict

s/sub_channel/iopub_channel/
workaround Windows lack of fork in subprocess tests

simple Process(target=f) doesn't work for interactively defined f.
allow disabling subprocess pipe
disable subprocess pipe in inprocess kernel

because it isn't using zmq anyway