Refactored existing code and added support for symmetric encryption.

I have a small desire to eliminate nonce generation as a possible source of errors. We don't need a csprng to generate nonces, we just want globally unique nonces. Maybe a uuid library could provide that without error?

Not a big deal, but something I keep thinking about.