Multi-version execution for increasing the reliability and availability of updated software