Task block tests

* Additional tests for `TaskBlocks.Using`
* Add tests for `TaskBlocks.While`
* Update `Using` and `While` to better handle some erroneous edge cases (including updated documentation)