Added Extension and ExtensionCollection classes

Extension and ExtensionCollection classes make the Color class more
extendable by providing an abstract class to use as an interface for
extensions and a collection object to manage extensions on an instance
level rather than a static level while still providing default tightly
coupled extensions on first load