Saltnado

Major re-work of saltnado. This includes comprehensive test coverage (yay!), documentation, and general cleanup. At this point I'd call this stable and I plan on rolling this rev out to our internal infrastructure over the coming weeks.

While doing this work I have run into a few places where documentation was a bit unclear, so I've added that to this implementation. I've also found a few cases where behavior of the API is unclear (in the case that you send 3 lowstates, and the second one fails).