[Fix #776, #773, #733] Rewrite bencode parser

I have rewritten the decoder. These are the main changes:

  -  require MELPA `queue` package. It used to be part of emacs, but not anymore.
  - nREPL dicts are now plists and accessor api is given by `nrepl-dict-p`,
    `nrepl-dict-get` and `nrepl-dict-put`.
  - nested stack is used for decoded messages to avoid re-parsing of incomplete messages
  - queues are used for received raw strings from server and for decoded requests
  - no more `nrepl-decoder-buffer`

A couple of notes:

* A lot of code was relying on internal representation of dicts. I have have changed everything I could find, but there might be more. Particularly, I cannot find an example to trigger `cider--var-choice`. So please have a look or provide a simple example with multiple candidates.
* Examples in #773 and #733 will run fast on <kbd>C-c C-e</kbd> and <kbd>C-c C-p</kbd> but  slow when you run them in the REPL. It has nothing to do with decoder but with the chocked emacs redisplay  (I guess, it's related to #228). I will have a look at it later when the comint part has been sorted out.
* `accept-process-output` trick in #616 is not necessary anymore.
> They are too trivial for tests but I would still like to keep them, especially those for nrepl--push as those are a bit tricky.

Tests are always useful. Wish we had much more of them...

> I will just bunch them all into one test function.

Fine by me.