Added some simple functionality to the profiler:
* Profiler no longer implements runnable, to prevent the temptation of a user from trying to run it themselves
* Profiler now accepts an executor in the start function if you wish to prevent it from starting it's own thread (possibly if you wanted to start/stop the executor frequently)
* Profiler has added functionality to query if it is currently running
* Profiler has the ability to be extended a bit easier

And the new changes are covered under the unit tests