This commit adds a `polygeist-opt` command line tool. This allows us to drive each of the polygeist passes individually and as such lays the foundation for adding tests of the individual passes.
In doing so, a fair bit of restructuring/modifications of the various namespaces, function names etc. employed in the passes have been done. This was mostly due to inconsistensies in symbol names and namespaces which weren't being caught as errors due to missing inclusion of pass registration.
Barriers are active on the first ancestor ParallelOp. When looking for
nested barriers, ignore those that are nested inside ParallelOps, which
are in turn nested in the operation of interest as they are active on
different loops.