Base button now uses a std:function instead of a boost:Signal Button constructor is now public, it was private which was causing problems to make subclasses