A simple transaction splitter that splits transactions into partial transactions depending on its split_size attribute. Transactions smaller than the split size are not changed in any way. The split boundary is always aligned to the split size. A transfer with an address that is not aligned to the split size will be split into a first part that carries only the first few bytes such that the addresses of all subsequent parts are then aligned to the split size.