A review of machine learning and deep learning applications in wave energy forecasting and WEC optimization