Eliminate parallel class hierarchy

We currently have the following class hierarchies:

* P2P_Connection_Type
* P2P_Indeterminate_Connection_Type

* P2P_Directed_Connection_Type
* P2P_Indeterminate_Directed_Connection_Type

This is a code smell and should be refactored.