New Features
1. Processing Nodes: Networks can now have an arbitrary numbers of node layers. The first layer contains `PrepareNodes`, the final layer contains `MeasureNodes`, and intermediate layers contain either `NoiseNodes` or `ProcessingNodes`.
2. Cost functions were updated to handle arbitrary numbers of layers.
3. PennyLane is updated to current version 0.27.
Breaking Changes
1. for the `NetworkAnsatz` constructor, the positional argument `noise_nodes` can no longer go behind the measurement node layer. All nodes, must be passed to `NetworkAnsatz` as positional arguments in the appropriate ordering. The last set of nodes must be a measurement layer, however, the remaining layers are generic.
4. Networks with noise nodes no longer use `"default.mixed"` automatically. All devices must be specified manually using the `dev_kwargs` keyword argument for the `NetworkAnsatz` constructor.
5. All supported cost functions are updated to handle processing nodes, which changed the behavior of a few cost function constructors:
* For the `shannon_entropy_cost_fn` method all nodes are passed input 0 explicitly.
* In the `mutual_info_cost_fn` the `static_layer` argument is removed where the mutual information is evaluated for all inputs and outputs.