Adding support for QUnit
Qunit test for auto loop set up

Now have two tests files, my custom testing and a Qunit test document.
Qunit test are being defined in QUnitTests.js.

Also, rolled standard test file back to previous state b/c I want to
retain that testing ability.
Listener autostart working

Created QUnit test to check that autostart is working correctly and
modified code to do cause autostart to occur.

Also added a bit of documentation to the beginning of the file.
Added arguments to class

A user of this class may now configure its start-up behavior using
arguments at the top of the file.

Instructions on how to set these arguments as well as appropriate
values have also been included in documentation at the top of the file.
Merge branch 'autoloop'
Setting up QUnit testing for auto-timeout

Auto-timeout of individual listeners does not seem to be working. I’ll
need to confirm it is with some tests.
Rethought auto-listen functionality

I realized that having the EventLoop simply start when the page loads
doesn’t make sense. It definitely uses resources (whether that’s a
little or a lot) while it’s running, but more importantly, if there’s
nothing to listen for, it shouldn’t be running.

I found this out when QUnit async tests returned an unexpected Type
Error, where there were no more objects in the listener array store,
but the listenerChecks() method was somehow still trying to check and
see if a trigger match could be achieved. At first, I thought perhaps a
bug in array.splice() was to blame, somehow not properly changing the
array length and causing array.length to report a size > 0. To try to
correct this I added a manual size counting system that increments and
decrements a private int, stored in the constructor, whenever a new
listener is added/removed, respectively. In the end, I think the
conflict had to do with how I coded the QUnit async tests. I think
tests were firing after I had already removed the objects from the
store, thus causing JS to throw a property undefined TypeError.

Regardless of all that, even without a bug in array.splice(), to code
defensively—if the loop runs continuously no matter the state of the
store—I should still be rigorously checking that objects are in the
store before allowing the check process to occur. This is all a lot of
extra work in terms of cycles and in terms of maintenance of the code,
when the idea of running without anything to listen for makes no sense
in the first place.

So, instead, I rethought the whole idea. Now, instead of starting the
listen loop on page load, the object only instantiates the singleton
instance on page load. For the user, however, the behavior should be
the same because now: Whenever at least 1 object is in the store, if
the listen loop is not running, it is automatically started by
autoStartStop(). And, if removeListener() causes the store to end up
with 0 listeners in it (a length of 0) it will automatically stop the
loop via autoStartStop(). (The loop is also automatically stopped
whenever clearListeners() is called.) Thus, we don’t waste any
resources running a loop listening for nothing, and I avoid having to
code all kinds of conditions before checking to see if actions should
be triggered.
Removed private vars for array size

The changes implemented in this branch make me comfortable not manually
counting the insertion of objects into the store, so I’m the code I
inserted to do that and returning the store length convenience function
back to its original (and most sensical) name - listenerCount()
Merge branch 'autostopstart'