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.
@mwoodiupui regarding a log message. We could put in a log.debug(). I'm hesitant to log any warning, as I see the role of complete() and abort() being to close out the Context. If the Context is already closed, there's really no work to be done.  But, I'm fine with adding a debug() log to state that complete/abort was called on a closed context to help along developers.