Improve performance of Palette.from_canvas

When saving a Canvas to a PNG file, we end up initializing an instance
of a Palette from the canvas pixels. Since the canvas pixels are stored
as an array, and Palette subclasses SortedSet, we end up with a
SortedSet of the unique colors in the Canvas.

While this works fine, I discovered that it could be a bit faster. After
some experimentation, it looks like if we first call `.uniq.sort` on the
pixel array before initializing the SortedSet, we can achieve some nice
performance wins with identical results. This was tested under Ruby
2.1.0.

For more context on the performance characteristics of this change, see:

  https://github.com/trotzig/diffux/issues/76#issuecomment-40322857
  https://github.com/trotzig/diffux/issues/76#issuecomment-40323354

We may also be able to use a similar technique in `.from_pixels`, but
since I am not aware of how that method is called and since it doesn't
benefit my current use-case, I am hesitant to make the same change there
at this time.
Clean up Palette

This commit fixes a few minor things as pointed out by Rubocop:

  - removed redundant `self.`
  - removed some unnecessary blank lines
  - indented `when` at same level as `case`
  - used `then` instead of `;` for `when` statements
Merge pull request #60 from lencioni/palette

Improve performance of Palette.from_canvas