demo: favor composition over inheritance

Since none of TimerPort's methods are overridden, it makes more
sense to use it as a member object rather than as base class.