Respond with authorization failure with some credit cards

Now, if we try to authorize the card with the number `4242 4242 4242 4242` we will respond with an authotization failure.

To implement this I need to store the real card number on the database. Of course this mock will be not used on production but be aware that it is storing the credit card information before inputing you real credit card number on QA.

There are some changes to make possible to access the order attributes using methods instead of `[]` accessor. I made this because we need to return the masked credit card number when reading the information but store the real number. So we return the masked value when accessing `order.card_number` and to not having two different ways to access the attribute now we don't implement `[]` anymore.
amount can be nil, this is why I didn't use fetch. If you are talking about mutating the value inside `normalize_amount` to not having to assign the return value to `attributes['amount']`, I usually prefer to not have side effects inside methods. Side effects make harder to understand the behaviour and it may be dangerous if you have subsequent calls.