Pull some generic functions out of the functor

Signed-off-by: John Else <john.else@citrix.com>
Remove wait_until_next_reading from interface

Signed-off-by: John Else <john.else@citrix.com>
Add doccomments

Signed-off-by: John Else <john.else@citrix.com>
Merge pull request #4 from johnelse/interface

Interface tidyup and documentation