Button hudget

Depends on #588

Buttons with std::function Callbacks, implementation example in hud.cpp
should we allow setting nullptrs as callbacks? if you want no action on click you should rather use a dummy callback