ICO codec implementation, which allows encoding and decoding of MS ICO format.

ICO images typically contain multiple images of various sizes and colour depths. Thus, this codec implementation provides methods to decode an ICO image as a list of BufferedImage objects, and to encode a list of BufferedImage objects as an ICO image.