minor refactor of profiler

* Use ProfilerBucket structs instead of (ProfilerCategory, ~[Float]) tuples
* Simplify the order check of bucket categories