Dont swallow errors when bad alias_method

Given the following models:
```ruby
class Shop < ActiveRecord::Base
  has_many :customers
end

class Customer < ActiveRecord::Base
  belongs_to :shop
  alias_method :foo, :bar
end
```

This should raise a `undefined method 'bar' for class ..`  and not a `uninitialized constant` error.

A bad `alias_method` raises a `NameError` error, which is the error we were swallowing in that method.

cc @zzak @rafaelfranca @tenderlove
Rather than hardcoding the exception message, why don't we capture the exception from above and assert that the two are equal? Or at least that the exception messages from the two are equal.