Cleanup up imports
Imporved verbosity and added is_sorted() checks in a few places
Changed the definition of is_sorted() to be an NOP when not compiling in verbose mode.

This makes benchmarking more fair.
Moved the is_sorted() function into the #ifdef VERBOSE block
Removed temp variable that was only used for verbosity
Whitespace
Fixed the bug that would return the wrong buffer.

The actual sorting was ok, but since this uses an additional buffer
sometimes the results would be in the 'wrong' one. This didn't matter
as the wrapup merge phase would do the right thing.

The edge case was when the number of blocks was a power of 2.
Then every even power of 2 would have the result in 'base' and
every odd power would have it in 'buf'. Then no wrapup merge would
happen.

The solution was to set the output pointer to 'buf' (we already bail early if there was only 1 block)
and swap it around until be run out of bits in blocks_done. I find this very ugly but
a) it works
b) it's not really inefficient
c) my train stop is coming up in 30 seconds
Converted things that should be unsigned to uint32_t