tabs to spaces
support the activityConfig optional maxAttempts property
Initial work towards supporting maxAttempts on the MultipleChoiceQuestion bric
added attempts handling to multiplechoicequestion

because this required depending on more functionality from the presenter bric, I created a new interface IChoicePresenter.

That required that I implement that class in RadioGroup and (to some extent) in SelectGroup.
Fix eventmanager to publish to all subscribers when some are unsubscribed during event
update existing unit tests for multiplechoicequestion to pass
tabs to spaces
Merge branch 'origin/master'
split the localanswerman into its own file
add attemptsMade and maxAttempts

actually using maxAttempts to determine when to add the correctAnswer will come later.
add an alwayscorrect evaluator to the local answerman
add pearson.utils.logToConsole function
local answerman now supports max attempts and returning correct answer
cleanup the score request objects from the question to the scoring engine and back

This meant renaming various properties.

In the score request event details:
* question was removed
* questionId -> submissionId
* answerKey was a string specific to multiple choice. it was replaced by the answer object, which for multiple choice has a key property containing the old answerKey value.

In the response details:
* score -> correctness
* response -> feedback
fix logic for adding correct answer to test correctness property not score
correctAnswer property in score request response may exist and be null
fix maxAttempts === null means unlimited attempts
add multiple choice and radiogroup unit test placeholders
add localanswerman.js to multiplechoice integration test html file
submission response correctAnswer property should not have a correctness property because it will always have a value of 1

The server was doing this, but I had forgotten when I implemented the localanswerman and multiple choice bric, so it showed up when I ran the integration test.