Eliminate parallel class hierarchy

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