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
update message spec adapter per review

- docs and comments
- adapt complete_reply with `end=null`, `start=-len(matched_text)`
- remove some incorrect `status` fields
- add `handle_reply_status_error` for handling `status=error` replies (no-op, currently)
Merge pull request #5752 from minrk/msgspec-adapter

Add adapter for msg spec versions