Make Model an abstract class

What used to be known as Model is now SpExModel (for speciation/
extinction model). Model is now an abstract class that will be
inherited by both SpExModel and TraitModel. This is being done
step-by-step, so only SpExModel inherits from Model (and the
inheritance is not yet complete).
Make TraitModel inherit from Model (unfinished)
Make BranchEvent an abstract class

SpExBranchEvent and TraitBranchEvent derive from BranchEvent for the
specific models they correspond to. Changes were made to other
classes to support the new event inheritance structure.
Rename rootEvent to _rootEvent in TraitModel
Generalize some methods to the Model class
Merge branch 'master' into refactor

Conflicts:
	src/Model.cpp
	src/TraitModel.cpp
Generalize addEventTree() methods in model classes
Remove printEvents() method from model classes
Generalize chooseEventAtRandom() in model classes
Generalize methods for moving events
Generalize method countEventsInBranchHistory(...)
Remove unused method addEventToTreeWithSetBeta()
Remove addEventToTreeWithSetBeta() from header
Generalize deleting events in model classes
Generalize restoreLastDeletedEvent()
Generalize adding/removing events
Generalize moving events
Remove initalizeBranchHistories(...) method

No one ever calls this method.
Remove printing methods that are not used anywhere

Also deleted initializeBranchHistories(...) from TraitModel.h that
should have been deleted in the previous commit.
Generalize acceptance rate methods