payment: initial version using state machines

This also:

* extracts the platform specific code
* adds DirectPaymentTransaction#getExternalKey, see https://github.com/killbill/killbill/issues/180
* fixes compilation errors with the latest Java client (PaymentMethodProperties has been renamed PluginProperty)
* allows override of payment method id, see https://github.com/killbill/killbill/issues/177
* exports payment plugin properties in direct payment resources, see https://github.com/killbill/killbill/issues/185
* cleans up credit and refund operations, see https://github.com/killbill/killbill/issues/187
* deprecates RefundInfoPlugin for PaymentInfoPlugin
* adds BUS events for all direct payments calls. Note that I have
re-used the existing events for now. It may be desirable to expose
more information in the future (like the type of transaction). Clients
do have the direct payment id though, so they can retrieve the information
if needed. See https://github.com/killbill/killbill/issues/179

Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>