Transport factory

This PR will implement a factory for the different transport implementations, after we agree on some parameter handling.

The `exec()` method in the AbstractTransport class includes a `$params` array, but this is not used for anything. Should we remove this parameter and perhaps have the AbstractTransport class extend the Param class to enable transport-specific params instead?