Parallel assignment for CGPoint, CGSize and CGRect

this pull request allows parallel assignments for CGPoint, CGSize and CGRect.
you can do things like this:
```ruby
point = CGPoint.new(10, 20)
x, y = point
puts x                           # => 10.0
puts y                           # => 20.0

size = CGSize.new(100, 50)
width, height = size
puts width                       # => 100.0
puts height                      # => 50.0

rect = CGRect.new(point, size)
origin, new_size = rect
puts origin                      # => #<CGPoint x=10.0 y=20.0>  
puts new_size                    # => #<CGSize width=100.0 height=50.0>
```