Previously engines were not thread safe, a seperate engine would be
needed for every thread. This is no longer the case. This allows for
much more efficient parallel execution
More preformance improvmnets
1. Switch to mimalloc which gave a roughly 10% improvment accross the
board
2. Use much faster compososition caching
3. Reusing work vector
GridFire can now support unity builds. This is useful for python
bindings. The main limitation is that openssl (a dependency of
libplugin) does not support unity builds. Therefore when building in a
unity build libplugin must be disabled. This is done with the
-Dunity-safe=ture flag at setup time
GridFire failed to compile on gcc and gnu stdlibc++ this has been
resolved. Further, the boost dependency has been removed since we no
longer use boost at all. This should dramatically simplify installation.
Finally we have added some build system checks to ensure that the
correct version of a C++ and fortran compiler are present on the system