pipelet.js, improve transactions support in Input and Output:
- Input: encapsulate access to this.source_transactions:
  - source_transactions_add   ( transaction_id, source ): adds a source for a transaction to source_transactions
  - source_transactions_remove( transaction_id, source ): removes a source for a transaction from source_transactions
  - source_transactions_remove_source( source ): to be completed and called on Input..__remove_source()
- Output:
  - emit():
    - fix transaction termination using remove_destination_from_transaction() and end_source_transaction()
  - add_destination_to_transaction(): use input.source_transactions_add(), fixing encapsulation issues
  - remove_destination_from_transaction(): use input.source_transactions_remove(); fixing encapsulation
  - end_source_transaction(): use input.source_transactions_remove(); fixing encapsulation
  - transaction_remove_source(): called from Input when removing a source to a destination input