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.
Not sure to like that. If the context is in read only mode a second call should be a no op but if it is a write context a secknd call is an illegalstate. Make this change could make much harder find bugs related to operation made on a complete context.