add txtest test helper
use txtest to minimize shared state between subtests
fix incorrect behavior for is_many properties
try to clarify docs