Launch multiple chains

These commits allow the client to launch all of the chains needed.

First commit:
It switches from launching the first chain in the alias_map to running all of them. It launches each chain one by one and adds their results to a hashmap under the pt name so the next chain can reuse the already launched pts.
Also if a chain contains duplicate pts, the pt will launch it once and then reuse the launched pt for each duplicate.

Second commit:
This combines the various dest_address, dest_port variables into a tuple pair to shorten the parameter lists. I think I will refactor the variables such as reactor, client, configuration, and others into a chain class to shorten the parameter lists and deduplicate documentation in the future. I'm passing the same variables to a lot of methods when they all relate to chains.