Volunteer shift signups are working again

I've made some changes to how we do Angular now that I have an extra year of Angular experience and have a better idea of how to write idiomatic and testable Angular code.  (Still no Angular unit tests for the signups code, but at least we could easily write some now, whereas before it was out of the question.)

I'll leave a bunch of inline comments explaining what I did.
``date.js`` is an orphaned project where the creator hasn't done anything or been heard from in years.  It's been replaced by the ``moment`` library, so I'm now using that.

There's only one other place where ``date.js`` was being used: the ``magcharts.js`` code was using its ``.toString()`` implementation of ``Date`` objects.  Since that code needs lot of fixing anyway, I just left it as-is for now.