[PowerGridFunctionSpace] Add a constructor that takes a variadic list of shared_ptrs to children

Such a constructor greatly simplifies on-the-fly construction of nested
spaces by allowing users to simply allocate children via std::make_shared().
[CompositeGridFunctionSpace] Add constructors that take a variadic list of shared_ptrs to children

These constructors greatly simplify on-the-fly construction of nested
spaces by allowing users to simply allocate children via std::make_shared().