1st Pass at Core Functionality

Stony, your description calls for navigation between several 3 or 4
pages. In the 1st pass I just used two and concentrated on getting the
core functionality running. This has not been thoroughly tested and
would no doubt be easy to break, but here's what I've gotten it to do so
far:
(1) Case 1: not all fundraisers listed in the CSV have corresponding
Contact objects. In this case, the app displays two lists, one of those
matching and another of those not matching. Button for migrating data
will be grayed out.
(2) Case 2: the app found corresponding Contact Objects for all
fundraisers mentioned in the CSV. Migrate Data button is enabled.

I modified the test CSV to give the fundraisers human fore and surnames.
I am also adding a second CSV in which fundraiser Bob is missing (the
csv with the 'What About Bob?' label). In my ORG I insert Contact
Objects for Sally and Steve but not Bob, so if I try to upload the
original CSV, the app complains that Bob isn't in there, whereas if I
upload the 'What About Bob' version, the app is happy, enables the
Migrate Data button and allows me to do the upload.