Button hudget

Depends on #588

Buttons with std::function Callbacks, implementation example in hud.cpp
...and to everything else you're passing by value that's not a primitive datatype ;)