Correct the submodule name for Luvent
Add an ‘onReachingTarget’ event to Actors and document when it runs

This patch adds an event to Actor objects: onReachingTarget.  If a
call to the moveTowards() method results in the actor reaching its
target then the game will trigger that event.  Each action registered
with the event will receive two parameters:

1. The Actor itself.
2. Its target.

This will allow us to add logic for specific actors (e.g. enemies)
that the game will execute whenever they reach their target, which I
feel works well in conjunction with actor behaviors to help us define
fun and interesting things.
Simplify the methods Actor:hasReachedTarget() and Actor:moveTowards()

Both methods test to see if their first parameter, the target, is nil
or not.  This patch removes those tests because it semantically makes
no sense to call either method with a nil target.  That should always
be an error.
Player: Remove commented out parts of the fire pattern

We have two <fire/> nodes in the player’s bullet pattern which we do
not use.  This patch deletes them.  We have already commented them out
and so keeping them around creates unnecessary noise which is
distracting when we’re trying to fix a bug related to player firing.
Add lovelog to our libraries and credit the author in the README
Debug: Implement support for creating debugging logs

This patch modifies our Debug module so that it provides a wrapper
around the ‘lovelog’ library by Jesse Horne.  It allows us to create
logs in any other module and send data to it so that we can build a
collection of log files with debugging data.  In the future we will
modify this behavior so that the logging functions are no-ops,
i.e. when we are to release the game.  So that means we should feel
encouraged to commit code which logs debugging information.
Debug: Save all logs when we quit the game

This defines the love.quit() function so that when we close the game
the Debug module will be sure to close any open logs.  We do not need
to worry about manually closing the logs because of this.  The patch
also adds a log to the main source file which demonstrates how to
create and use logs.
Merge branch 'ejmr/add-debug-logging'

* ejmr/add-debug-logging:
  Debug: Save all logs when we quit the game
  Debug: Implement support for creating debugging logs
  Add lovelog to our libraries and credit the author in the README
  Player: Remove commented out parts of the fire pattern
Player: Fix the game crashing when collecting stardust

Commit e2526596 combined all of the existing player-related code into
a single module.  That introduced a bug by removing the gainStardust()
function, which in turn causes the game to crash as soon as the player
touches any stardust on screen.  This patch fixes that crash by
reintroducing the function as a method of the Player class and
updating the one call-site to reflect that.
Pattern: Update the timers before testing the ‘wait timer’ value

The update() method will immediately return if the bullet pattern has
a non-zero value for its wait timer.  The method updateTimers()
decrements the wait timer but we need to call it before testing the
value of the timer for it to have any effect.  This patch changes the
logic in update() so that it calls updateTimers() to affect the wait
timer first, and then decides whether or not to return based on the
wait timer only after we update its value.

This partially fixes the problem with firing.  In particular, enemy
bullets will appear that previously would not show up at all.  But
those bullets will not move at all, so this is not a complete fix.
Pattern: Log the execution of every instruction

This creates a log showing us when the game executes every bullet
pattern instruction and for which pattern.  We use this to look for
any incorrect or missing instructions, specifically to help us fix the
problem of actors not firing as quickly as they should be.
Pattern: Log the timers when calling updateTimers()

This is also to help us debug problems with the rate of fire by
showing us how the game is counting the timers for each pattern,
including the wait timer, which seems to be incorrect at least for the
player fire pattern.
Milestones: Initial draft
Add the ‘--scene’ command-line argument

This argument allows us to provide the name of a scene that we want to
start playing immediately, skipping the title screen.  This speeds up
testing and debugging.
Makefile: Update Git sub-modules when building the game

This helps ensure that we are always using the correct versions of the
libraries in those sub-modules.
Pattern: Rename ‘waitTimer’ to ‘waitTime’

This patch renames the property because we do not actually use it as a
timer in the same sense as the ‘timer’ property.  The latter is always
increasing.  However, the time we want to wait is a value that we
decrement every frame.  So semantically it makes more sense to call
that property the ‘waitTime’ since it represents the amount of time we
will continue to wait in a pattern before moving on to the next
instruction to execute.

This patch also reformats some of the log output so that it is easier
to read, aligning everything by the overall elapsed time to the left.
Simplify the attack pattern for drone enemies

We can use ‘infinite’ for the repetition and remove the initial wait.
Pattern: Record debugging output for every bullet fired
Pattern: Simplify the updateBullets() method

This patch modifies the method so that it only performs one pass over
the bullets.  We were performing two passes, one to remove any bullets
that either had reached their target already or had gone off screen,
and then another to move the remaining bullets towards their target.
This commit changes the logic so that all of the above happens in only
one loop.
Pattern: Add debugging output for the position of every bullet

This tells us the current location of every active bullet in a
pattern so that we can trace their movement.  This will hopefully help
us fix the problem of enemy bullets not moving at all.