Add SensorEngine (WIP)

* `Phenotype`s now provide a list of sensor *descriptions*
* A `SensorDescription` has a bunch of fields common to all sensor types
* Sensors can filter by *tag*. Tags are arbitrary Strings attached to
  `Taggable` objects.
* All our subclasses of `PhysicalObject2D` implement `Taggable`.
* `SensorReading`s are now wrappers around lists of doubles.
* `SensorEngine` is partly implemented but not actually created anywhere
  yet. The objects sensed still need to be converted into a signal
  output. The `sense()` method needs to be called from somewhere.
* Some stuff cleaned up and moved into `Utils`.