Refactoring widget system to allow containers, added button widget