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.
@abollini I don't understand your comment. In the PR, the second call to Context.complete() will ALWAYS be a no-op...it doesn't matter if the Context is read-only or write.  

In my mind, the role of Context.complete() is to *close* the context object (after committing changes). If the context is already closed, there is nothing to commit.