Synchronous Open Support

I finally managed to get a version of syncOpen() working -- this has already been requested in issue #26.

The behaviour is exactly equal to the async version, I just put all the code from OpenAsync into the new static function syncOpen. It throws an exception on error.

I also wrote a rudimentary unit test for syncOpen() that simply tests if the handle returned passes a simple put/get test.

Merging would be highly appreciated as this feature has been requested repeatedly.