Added Tone (HSL changes to sprites).

We use shared_ptr to keep track of objects, because in ruby, one
may do something like:

    t = sprite.tone
    # sprite goes out of scope and deletes tone...
    # t now points to invalid space

shared_ptrs that are also kept wrapped inside the ruby objects
(sadly they need to be dynamically allocated there which is crazy)
allow us to persist that Tone instance while in use.