Cipher X-CS-Auth token and X-CS-User, rename Headers and refactor

I've implemented 2 things:

First, made the genRandomString actually generate a cryptographically strong random string using crypto core library.

Second, the returned token on the header X-CS-Auth is now ciphered when sent to the client and deciphered when returned for session checking.

Might be a bit overkill though...

I'm planning on adding the option to customize the headers sent to the user if that makes any sense (changing X-CS-Auth for any other arbitrary header name, or hiding the X-CS-User header for example)

Great project :)