As discussed @gnode headquarters there are now optional groups

Optional groups are a functor struct that opens a group in the file if allowed by the user and if it is not open already. Other the ```Group::openGroup``` in the case that it is _not_ allowed and does not exist an unset optional is returned an not an error thrown.
The ```optGroup``` is primed and created by ```Group::openOptGroup```.
So far implemented on ```BlockHDF5::source_group``` only.
Merge pull request #343 from balint42/optional_groups

As discussed @gnode headquarters there are now optional groups