Using std::function

Now we can have things created on the stack, but still accessed
globally...there could be negative consequences to this...would we
rather pass the log down to every object? This seems cleaner. Waiting
for further bears.