Applications of Artificial Intelligence to Photovoltaic Systems: A Review