Refactoring and documenting nrepl

While I was learning how nrepl works I decided to help future generations and document and re-factor in a systematic way `nrepl-client.el`.  The code was very dificult to follow for two main reasons, not always intuitive or systematic naming conventions and pretty chaotic organization of the file. Client side was spread all over the place.

For readabilty purposes I have made the changes it in 3 steps. 

- First commit is a refactoring pass and consists of mostly variable and function name changes. Some, mostly stylistic, code  improvments are there. The changes should be pretty self explanatory from the diff.   
- Second commit is the re-organization of the file structure.  I have moved the stuff around in chapters, namely:

       - BENCODE
       - CLIENT: PROCESS FILTER
       - CLIENT: INITIALIZATION
       - CLIENT: RESPONSE HANDLING
       - CLIENT: REQUEST HANDLING
       - SERVER
       - UTILITIES
       - CONNECTION BUFFER MANAGEMENT
       - CONNECTION BROWSER

   There are no explicit code changes in this commit.

- Third commit is mostly the documentation changes. I have added a hopefully comprehensive documentation of the client-server communication both in the comment section and in each of sections. 
This something I definitely want yo to change. I don't believe in this short local names dogma - names are either userful or not. `nbuffname` carries zero meaning; should be at least `server-buffer-name`.