jupyter-client 0.1.0

Jupyter client written in Rust
Documentation
# Adding a new SHELL message

These are the steps to add a new Command/Response pair:

- Add a new enum variant for `Command`
- Add a new implementation to turn the command into a wire message (`Command::into_wire`)
- Add a new enum variant for `Response`
- Add a new deserializable struct for response content
- Add an entry to match the `msg_type` in `WireMessage::into_response`
- Add `into_packets` tests in `wire.rs`
- Add `message_parsing` tests in `responses.rs`

# Messages requiring implementation

## Client -> Kernel (SHELL)

- [x] `kernel_info_request`
- [x] `execute_request`
- [x] `inspect_request`
- [x] `complete_request`
- [x] `history_request`
- [x] `is_complete_request`
- [x] `shutdown_request`
- [x] `comm_info_request`
- [ ] `interrupt_request`

## Kernel -> Client (SHELL)

- [x] `kernel_info_reply`
- [x] `execute_reply`
- [x] `inspect_reply`
- [x] `complete_reply`
- [x] `history_reply`
- [x] `is_complete_reply`
- [x] `shutdown_reply`
- [x] `comm_info_reply`

## Kernel -> Client (IOPUB)

- [x] `stream`
- [x] `status`
- [x] `execute_input`
- [x] `error`
- [x] `execute_result`
- [x] `clear_output`
- [ ] `display_data`
- [ ] `update_display_data`

## Kernel -> Client (STDIN)

- [ ] `input_request`

## Client -> Kernel (STDIN)

- [ ] `input_reply`

## Kernel -> Client (CONTROL)

- [ ] `interrupt_reply`