encription and decription with random salt

introducing this new features:
 * Now you can use random salt, it's important because the same plain text produce a different encrypted.
 * Encode salt in the encrypted data, it's important to use in conjunction with other software.
 * Also decoding using salt extracted from encrypted text.

This way you are compliant with others software like openssl.

If you use PbeWithMd5AndDes::encrypt and PbeWithMd5AndDes::decrypt functions with 5 arguments the behavior is the same as yours version. If the parameters are $data and $keystring the enc/dec use random salt