Refactor hash interface for future reuse
This refactoring also uncovered some kind of bug, that got masked by the `twtxt.models.Tweet` constructor, which did the actual conversion to seconds precision. Without that Tweet container in between anymore, two precision-related tests failed. So this precision handling needed to be replicated into the hash creation – where it acutally belongs. One day, we're finally getting rid of the `twtxt.models.Tweet` entirely, so it's not really duplicated anymore. This is part of surgically removing the twtxt reference implementation of tt.
Showing with 37 additions and 30 deletions