Export function for all attendee raw data

Added a all_attendees function to /summary that exports every piece of
information saved in the database. Some of the information is too raw
for human use.
Added attendee_upload function

Adds a way to upload a .csv to import attendees. Currently doesn't work
100% correctly for all data.
Refactor export and import to work dynamically

Exporting and importing now works on all columns in the Attendee
database without needing to special-case specific columns. It instead
modifies them based on their type.

Foreign keys are just exported as keys, but nothing breaks horribly.
Fix emails

A previous commit mistakenly causes emails to always be withheld from
the Stripe form. This fixes that.
Rewrite badge renumbering function

The badge renumbering and shifting function has typically been brittle,
difficult to read, and ill-suited for modern purposes. This is a full
rewrite with the aim of making the function work better, particularly
with the new shift_custom_badges paradigm.
New badge numbers are always in range

Forces new badge numbers to only tack onto other badges that are in
range AND of the same type. This helps prevent range desyncs from
getting out of control.
Add last check for shift_custom_badges

All calls to shift_badges now check against this config variable.
Adds upgrades to the confirmation page

A rough copy of the javascript and CSS from the form page, altered so
that attendees can't try to downgrade their badge level.
Refactor JS into preregbase

Moves the javascript for badge selection into preregbase. Also moves the
international checkbox hiding function into address.html, and adds a
check for a field to get rid of our last JS error.
Fix checks for payment

amount_extra gets set before the attendee has paid, so this includes
changes to make sure the boxes are only disabled for paid attendees.
Move badge selection boxes

Factors out the badge selection boxes into the currently-unused
badge_choice template, as the html is now being used in several places.
Also adds an is_new check to make sure attendees don't try to convert
their badges to groups.
Add group_id check

Stops the "group" choice from showing for new group members. Editing a
group during registration is a little strange now, but fixing that is
really low priority.
Remove duplicate JavaScript

I accidentally left a block of JS in the address.html, even though it's
already in preregbase. Taking that out.
Basic fixes to badge number function

Adds back in the ability to handle multiple badge assignments at once
and asserts SHIFT_CUSTOM_BADGES inside the shift_badges function.
Minor fixes for attendee import

Removes an extra 'raise' that caused an infinite loop, and orders
exported attendees by badge number.
Extra check for non-preassigned badges

Adds a second check to make sure we don't assign numbers when we don't
need to.
Remove checked_in check

next_badge_num doesn't get an Attendee object, so it can't see if that
attendee has checked in. Removing that check so it works.
Add overflow check

Adds a check to make sure badges don't automatically get assigned
out-of-range.
Add new tests for next_badge_num

Improves and adds unit tests for the next_badge_num function.
Track page views for attendees and groups

Tracks every time someone loads an attendee or group /form page, and
logs it in the feed of database changes.