Wait functions

While the timespec PR is waiting on reviews, I want to get the ball rolling on this one, which is the actual change that one sets up for. [Click here for a diff with with the timespec-refactor2 branch](https://github.com/clearpathrobotics/serial/compare/timespec-refactor2...wait-functions).

Haven't had a chance to test this much at this point, but it will be going into battle on two different peripheral drivers in the next day or two, so there will be some practical miles on it long before an actual merge happens.