Changes for ruby 3.6

I ran into a couple of issues trying to use your module. 

Main issues were:
 - Puppet did not like passing of timeout or retry_intervals (they get passed in as strings to the provider)
 - Puppet was generating warnings about multiple default providers
 - Had problems getting correct versions of Gems to run specs

This pull request addresses these issues. In addition:
- refactoring of tests to use new syntax, pulled out common tests into shared context/examples
- updated the timeout block to use `Timeout` module
- set tcp to be the default provider.