[4.1] [IMPORTANT FIX] Improved Random

I've fixed the errors introduced in laravel 4.1.28 whenever the `validMac` function was called on `Illuminate\Encryption\Encrypter` causing: `You need to specify a file path to store the seed`.

I've changed the function calls to the random method to always call the string class on suggestion by @barryvdh to ensure we are definitely calling the correct random methods.

I've improved the symfony security dependency so we only require what we actually need and added a few tests to check the generated strings are ok too.

---
The diff isn't very readable, so I've included a copy of the code before and after.

**Before:**
```php
/**
 * Generate a more truly "random" alpha-numeric string.
 *
 * @param  int     $length
 * @return string
 *
 * @throws \RuntimeException
 */
public static function random($length = 16)
{
    if (function_exists('openssl_random_pseudo_bytes'))
    {
        $bytes = openssl_random_pseudo_bytes($length * 2);

        if ($bytes === false)
        {
            throw new \RuntimeException('Unable to generate random string.');
        }

        return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $length);
    }

    return static::quickRandom($length);
}
```

**After:**
```php
/**
 * Generate a truly "random" alpha-numeric string.
 *
 * @param  int  $length
 * @return string
 */
public static function random($length = 16)
{
    $bytes = null;
    $class = 'Symfony\Component\Security\Core\Util\SecureRandom';

    if (class_exists($class))
    {
        try
        {
            $bytes = with(new $class($app['path.storage'].'/meta/seed.json'))->nextBytes($length);
        }
        catch (\Exception $e)
        {
            $bytes = null;
        }
    }

    if ( ! $bytes)
    {
        return static::quickRandom($length);
    }
    else
    {
        return $bytes;
    }
}
```

---
Replaces #4175. Related to #4130. Fixes #4182 and laravel/laravel#2849.