I have mixed feelings about exposing the internals of ADTs this way. If having a `dateMethod` functions saves space, that's fine, but I think I'd rather have `liftDate :: forall r. (JSDate -> r) -> Date -> r` or something similar, which just used a regular pattern match.