In some cases, copying dataset object, either by passing by value or in
some other pattern can lead to code that will close the same dataset
multiple times (e.g. defer). Or otherwise, code with complicated
handling of dataset cleanup.
Fixes: #30, Closes: #31
Test implementation is separated per datasets and pools to avoid one big complex file.
Tests are dependent so order of execution is forced by adding a_test.go running
test with sub tests in required order.