added Qk to orthogonalized polynomial basis

The choice between Pk and Qk can be made through an additional template parameter (either PB::BasisType::Pk or PB::BasisType::Qk).
It defaults to PB::BasisType::Pk so that no changes have to be made for existing codes.
To avoid an exhaustion of the stack for large polynomial orders, the internal low precision matrices and multiindices are stored on the heap.