Transaction id field method to include in reports

This is my stab at #5157. I don't think that the field name should be standardised as that will be hard to maintain backwards compatibility with. It's probably not a good idea to change field names like that.

So my proposal is to include a field on the abstract gateway class that can be accessed through the new `get_transaction_id_field_name()` method on that same class. If the gateway supports it (it just needs to set the property), the field name can easily be accessed.

Downside to this approach is that each gateway needs to explicitly add compatibility for this, but that would be the case for any other way to standardise this. It's just a minor change for gateways though, as it only requires them to set the property (as demonstrated in the PayPal gateway in this pull request).