A Fault-Tolerant Control Architecture for Unmanned Aerial Vehicles