Paypal IPN handling

A lot of hash key renaming happens here and I have a feeling that we need to do this kind of renaming also somewhere else. So, what if we extend the `define_builder` method to support renaming, something like this:

```
AuthorizationCreated = EntityUtils.define_builder(
  ...
  [:authorization_id, :string, :mandatory, from: :txn_id]
  ...
)

expect(AuthorizationCreated.call({txn_id: "asdf"}))
  .to eq({authorization_id: "asdf"})
expect(AuthorizationCreated.call({authorization_id: "asdf"}))
  .to eq({authorization_id: "asdf"}) # idempotent
expect(AuthorizationCreated.call({authorization_id: "asdf", txn_id: "ghjk"}))
  .to eq({authorization_id: "asdf"})

```