Refactor of Sensor things

This is almost there, I think we just need to initialize the new sensor objects instead of the old mess. I'm creating a PR now so I can get feedback on the API.