Rewrite `sync-request` subsystem

Changes to `nrepl-send-sync-request`:

   - returned response is now a standard nREPL dict
   - returned response is a merged dict of all the responses received so far

Other changes:

   - Reduce redundancy in eval APIs by removing several eval functions on CIDER
     side. They were either not used or could be replaced with direct calls to
     nrepl API.
   - Enforce `cider-sync-request:OP` convention and move all requests into
     `cider-client.el`.