Only assert that at least 1 step is seen, as we're not guaranteed callbacks for all steps

The callback may not get added on the server until after the command has already started running, depending on network latency
Add test for when callback is added after command completes on server
Remove duplicate assert
Use CallbackWrapper instead of handle
When calling poll from the constructor, do it async

poll may call onFinished, which is virtual, and virtual function calls do not work from ctors
this makes callbacks that are added after the command finishes work