[WIP][POC] Implement Fernet

https://github.com/fernet/spec

A number of outstanding issues:

- [x] use the invalid test suite
- [x] clean up the test cases (make them use less internals)
- [x] is there a reason to expose `current_time` on `decrypt()` to users?
- [x] docs
- [x] better error handling all around
- [x] move `constant_time_compare` to C code.
- [x] decide whether we want fernet at all until we convince them to make some changes
- [x] figure out where `constant_time_compare` belongs
- [x] get tests passing :)