Migration and Migration::Preview resource

Adds new `Chargify::Migration` and `Chargify::Migration::Preview` resources.  Allows for the following:

```ruby
subscription = Chargify::Subscription.find_by_customer_reference('marky-mark')

# Chargify::Migration
migration = subscription.migrate(:product_handle => "basic-plan")

migration = Chargify::Migration.create(:subscription_id => subscription.id, :product_handle => "basic-plan")

# Chargify::Migration::Preview
preview = Chargify::Migration::Preview.create(:subscription_id => subscription.id, :product_handle => "basic-plan")

preview = Chargify::Migration.preview(:subscription_id => subscription.id, :product_handle => "basic-plan")
```

Also "does the right thing" with respect to errors:

```ruby
migration = subscription.migrate(:product_handle => "non-existent-plan")
migration.errors.full_messages
# => ["Invalid Product"]

preview = Chargify::Migration.preview(:subscription_id => subscription.id, :product_handle => "non-existent-plan")
preview.errors.full_messages
# => ["Product must be specified"]
```

See `examples/migrations.rb` and specs for more details.

This PR would close Issue #47 and incorporate changes suggested by PR #41.

<b>Note:</b> Also modified the commit from PR 67 (Charges resource) that used newer Ruby hash syntax; we are now still compatible with Ruby 1.8.7 versions.