DS-2125 Fix possible NPEs in Context object commit/complete/abort

This PR fixes DS-2125 and also adds Unit Tests for the Context Object
https://jira.duraspace.org/browse/DS-2125

While most of the new Unit Tests succeeded by default, the following three tests failed initially but have been fixed by minor modifications to the Context object's commit()/complete()/abort() methods:

* `testAbort2()` - Tests calling abort() twice
* `testComplete2()` - Tests calling complete() twice
* `testCommitInvalidContext()` - Tests calling commit() on a Context which was previously aborted or completed.

The above three tests now succeed and the changes to the Context object resolve DS-2125.

UPDATE: To clarify a possible point of confusion based on comments below. With this PR, here's how calling commit()/complete()/abort() on a closed/invalid (read-only or write) Context react:
* Calling `commit()` on a closed/invalid Context results in an `IllegalStateException` (previously it threw a NPE). See the `testCommitInvalidContext()` unit test which tests for this scenario. I chose to make this throw an `IllegalStateException` as that is how calling `commit()` on a read-only Context also reacts.
* Calling `complete()` on a closed/invalid Context results in a no-op (previously it threw a NPE). See `testComplete2()` unit test which tests for this scenario.  I chose to make this a no-op as that seemed to be the goal of how the code previously worked, except it failed to check for a possible `null` database connection.
* Calling `abort()` on a closed/invalid Context results in a no-op (previously it threw a NPE). See `testAbort2()` unit test which tests for this scenario.  I chose to make this a no-op as that seemed to be the goal of how the code previously worked, except it failed to check for a possible `null` database connection.