What is a Convolutional Neural Network (CNN) and how is it used in computer vision tasks? How do convolutional layers, pooling layers, and fully connected layers work together in a CNN? What types of problems are best solved using CNNs? What are the advantages of CNNs compared to traditional neural networks? What are the limitations and challenges when working with CNNs in computer vision?