Dynamic scheduler

Name kind of suggests it all.  This needs to be approved alongside with my recent Forge pull request or else everything will break.  For now just default to a static scheduler in C++, dynamic scheduling is available.
all of the profile related code should be refactored into 2-ish methods and moved into the profiler classes; it greatly clutters what's going on in this loop