Embedded Sensors, Communication Technologies, Computing Platforms and Machine Learning for UAVs: A Review