Set classWord when learner id is set

This way we know where to add our score to the Firebase leaderboard.

[#59760058]
Add new Firebase Leaderboard controller that adds rep and observes changes

Controller creates class if it doesn't exist, and adds initial reputation on
class creation.

Controller pushes reputation to firebase when in-class leader's reputation changes.

All Firebase changes are observed, and the controller's own list of leaderboard
entries is updated.

[#59760058]
Add leaderboard view to world, town and tasks

[#59760058]
Prevent rep from being sent before learnerId is set

[#59760058]
fix typo
Force leaderboard to update on initial reputation setting

[#59760058]
Change how we force reputation setting
Clear Firebase reference on logout

[#59760058]
Clear class word and learner id on logout
Fix handling of null classRef
Directly force leaderboard to update
Wait until later to ask for nameWithLearnerId

The fbClassCreator observer gets called after the learnerId is
set, but before the nameWithLearnerId property has updated.

By asking for nameWithLearnerId after the FireBase callback, we
can be sure that the Ember RunLoop has finished and the property
will be updated.

[#59760058]
Wait until we have both learner id and nameWithLearnerId
Show first 10 + user in leaderboard
Clear leaderboard on logout
Slow down rep change animation

[#60200496]
Create more noticeable glow for rep score changing

[#60200496]
Add free moves property to task model

[#60697186]
Use Free Moves before subtracting reputation

Keep track of total number of moves used, so we know whether to
refund reputation or refund a move when an action is undone.

[#60697186]
Add moves remaining text to meiosis bubbles

[#60696890]