We are not trying to handle user input so `cast` can be a no-op. Also extract the base36 normalization logic, let the binary class handle the serialize encoding and add some tests.
ref: https://3.basecamp.com/2914079/buckets/37331921/todos/9243121525
ref: https://fizzy.37signals.com/5986089/collections/7/cards/1302
ref: https://fizzy.37signals.com/5986089/collections/7/cards/944