Add builder for Timeout rule. Make Timeout rule designed for extension.

They are protected because I want to make it easier for people to extend `Builder`.

Some of the pull requests that haven't been progressing could be solved by allowing developers to subclass `Timeout` and using the Builder pattern seemed like a good way to go