Add a ButtonState Machine which represents the state of total_size label, play button, and download button. Also implemented the update/determine_state function for ButtonState. Also implemented required generic functions for MediaMachine<X,Y,Z> that convert it to the desired state.