Allow to build an external version based on its source and base branch.
- Use a namedtuple to pass more data about the external version around
- Automation rules can now receive extra kwargs to be passed down to the match and action functions
- Automation rules now return a tuple, the first element indicate if rule matched and the second is the return value from the action,
this was done, so we can know if the build was triggered or not for external versions.
- Moved the actions to the base class, since it doesn't look like we are going to have a different set of actions
- If the user doesn't have automation rules for external versions we just build everything as before,
but if the user has at least one, we use the rules to trigger the build.
Ref https://github.com/readthedocs/readthedocs.org/pull/7653