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 then ```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.