Handle bolus and wizard objects

@jebeck @kentquirk 

These are the changes to handle wizard and bolus objects.  With this, all of the object types should now be handled, so next up is actually running this thing against some real data and either rejoicing that it works or fleshing out unit tests.

Let me know what you think.
I have confirmed to my satisfaction that contrary to this code (and test `input.csv` files), in real data the sequence numbers of the events in a dual-wave bolus run (1) normal, (2) square, (3) wizard. There are also a couple of cases where the sequencing is not strictly incrementing by one (in both cases because a pump alarm interrupts the sequence numbering). Happy to talk about other ways we might go about gathering together dual-wave boluses and wizard events.