Pipelet.add_source(), move double connection detection and exception to connect()