Modify VoterFactory voter generation

Modify VoterFactory's method of generating voters. Voters are generated
with a social  preference distributed through a bimodal distribution
resembling two normal distributions with means in the center left and
center right. Economic preference is also conditionalized based on
the social preference of the voter (Left wing social preference will
lead to a higher probability of the voter having left wing economic
preference and vice versa. The competence ratio of voters has also been
decreased to a more reasonable level.
Rename PartyWithVotePreferences to PartyWithVotes
Add PartyWithDoubleValue

Add PartyWithDoubleValue to represent things such as the percentage of
seats a party holds.
Modify Election with method additions and renames

Changes:
 -Rename runElection() to run()
 -Rename results() to toString()
 -Rename getElectionResults() to results()
 -Rename occurences of PartyWithVotePreferences to PartyWithVotes

 -Add noVoters()
 -Add noParties()
 -Add votesForParty(Party p, int choice)
 -Add percentageVotesForParty(Party p, int choice)
 -Add seatResults()

 -Change isComplete to protected access to help subclassses
Modify PRElection to work with name changes
Modify ElectionTest to work with name changes
Add new types of elections

Additions:
 -MajoritarianElection
 -NMinOneAvgElection
 -TwoRoundElection
Fix rounding error in Voter for party utility

Fix a rounding error in Voter when calculating the utility value for a
party.