Added middleware.utils.createSecureToken() and made backpack connect use it.

Note that the function currently calls the synchronous version of
crypto.randomBytes(). This was done so I wouldn't have to re-engineer
backpack connect's model to work asynchronously, and hopefully shouldn't
be that huge a deal right now because backpack connect tokens aren't likely
to be created/refreshed that often. However, we can change it to work
asynchronously if needed.