Add comptime (via generic) FailMode
A Row/QueryRow/Iterator/Record can now either be "safe" or "unsafe". When safe,
fetching operations (e.g. row.get() will return an error on type failure, e.g.
requesting a bool when the underlying column is an int).
By default, operations return "safe" variants.
In unsafe-mode, these methods log + unreachable. Unsafe types can be fetched
via "Unsafe" variatns, e.g pool.row() -> pool.rowUnsafe().
This is a huge breaking change. Before this, everything was unsafe by default.
Migration means either
1 - switching to unsafe methods, row -> rowUnsafe
2 - handling the fail-case on any get row.get(bool, 0) -> try row.get(bool, 0)