Support iOS 5 and iOS 6

UIColor implements NSCopying as of iOS 6, which makes it annoying to use
UIColor as the key in a dictionary in a backwards compatible way.

Instead just switch to an array representation since we're doing lookups
by color anyway. As a bonus we can get rid of the code that walks the
dictionary into an array anyway.