[WIP][POC] Implement Fernet

A number of outstanding issues:

- [ ] use the invalid test suite
- [ ] clean up the test cases (make them use less internals)
- [ ] is there a reason to expose `current_time` on `decrypt()` to users?
- [ ] docs
- [ ] better error handling all around
- [ ] move `constant_time_compare` to C code.