add IPython.kernel.adapter

for adapting msg spec versions
begin testing msg spec adapter
further adapter tests, and associated fixes
adapt messages in Session

adds Session.adapt_version for target version.

- serialize adapts to Session.adapt_version (default: 0, no adaptation)
- unserialize always adapts to current active version
interrogate kernel_info to get protocol version for adaptation