I agree that it feels a little weird but the biggest issue is that `Check()` has to use the `DB.freelist` which is not thread safe. Hiding the functionality won't work because we need to use it from the `github.com/boltdb/bolt/cmd/bolt` package.

The main reason I'm ok with this is that I don't think most people will use `Check()`. I suspect 99% of users of `Check()` will use it through `bolt check` or through `DB.StrictMode` which both handle this case correctly.

The plus side is that using `Tx.Check()` on a read-only transaction can only crash a process or give errant usage data -- it won't corrupt the database or freelist.