GenerateRandomString returns a URL-safe, base64 encoded securely generated
random string. It will panic if the system fails to provide secure random
data.
ReadRandomBytes is a helper function that reads random data into the provided
[]byte. Tt returns the number of random bytes read and an error if fewer
bytes were read.