Add run time type checks
we're relying on the "type system" to protect us against ULID overflows, but the compiler checks and assertions aren't guaranteed to be portable, so we need to inspect our bounds to see that we don't pass the upper limit for ULID according to the spec
rather than ad-hoc checks and error
like I was using before, this
can all be simplified to use check-type
Furthermore, we can make test cases that construct static ulids that approach the upper permitted boundary and verify that if we try and generate past this ceiling, we get type errors signaled.