Restructure interfaces in PIPECore so that PetriNetComponents follow
an interface structure #2

* All can extend AbstractPetriNetPubSub and then implement the correct
  interface.
* Also removed getName from PetriNetComponent, so they now just have an
  id
* All tests pass
Create Place interface and concrete class is DiscretePlace #2
Create Transition interface and DiscreteTransition concrete class #2
Token is now interface, concrete class is ColoredToken #2
Create RateParameter interface, concrete class is
FunctionalRateParameter #2