bug 5225: adding vanishing skip link to free site scheme. looks unfortunate in IE 7 (unsupported) due to ie 7 completely flaking out when an empty, unstyled div (or a contenty, styled div) is placed above the logo.
(bug 5147) Initial work
bug 5232: when placeholdering, the direct link shouldn't be in the placeholder's div
(bug 5147) Show up properly on notifications interface
(bug 5147) Allow different query settings for different related events
(bug 5147) Call local raw_subscription method per related
(bug 5147) Convert opt_gettalkemail into ESN subscriptions

Either:
 * temporarally in raw_subscriptions
 * permanently when visiting subscription management
(bug 5147) Pass scratch, remove Dumper calls
(bug 5147) remove all traces [ except conversion ] of opt_gettalkemail
Merge branch 'develop' into feature/bug5147
(bug 5147) Split new notification into reply to comm entry/reply to comment
(bug 5147) Migrate opt_getselfemail to ESN.

Clean up stray debugging code
(bug 5147) Remove unused strings
(bug 5147) rename "I comment on any entry in someone else's journal" to match old behaviour

Instead of the other way around.
(Bug 215) Add database table for vgift transactions.

This is the last remaining table from the initial database design, which was
drafted in 2009 but not needed until now.  Some properties of the transactions
are stored in the purchase cart instead of the transaction record; I didn't
want to duplicate information, but we may want to revisit this later.

Because this is a clustered table, it is added to the list in @LJ::USER_TABLES.
There is already a key for vgifts in alloc_user_counter, so we just change it
to use the correct columns from the new table.
(Bug 215) Strip trailing whitespace in separate commit, for clarity.
(Bug 215) DW::VirtualGiftTransaction - methods for working with transaction data.

This was originally implemented in the context of DW::VirtualGift, but
as the project evolved, it was clear these would better be handled as
methods on a new kind of object representing a single vgift transaction.

Several rounds of tweaking have been incorporated into this one patch.
If anything described seems to be missing, it should show up later.
The FIXME lines in particular will go away with the addition of another
new module defining a new shop item class.
(Bug 215) New module DW::Shop::Item::VirtualGift.

This is just the shop backend. I tested it using code like this:

 my $cart = DW::Shop::Cart->new_cart;
 my %opts = ( target_userid => $u->id, vgiftid => 15, anonymous => 1 );
 my $item = DW::Shop::Item::VirtualGift->new( %opts );
 $cart->add_item( $item );
 $cart->state( $DW::Shop::STATE_PAID );  # creates transaction row
 $item->apply or warn "did not apply";   # sets status to delivered
 $cart->state( $DW::Shop::STATE_PROCESSED );  # housekeeping

Seemed to work OK; hopefully this means it will integrate seamlessly with the
shop engine when the time comes.  I left in a FIXME to remind me to check and
make sure name_text/name_html do what I expect in context later, and to fire
a notification when the gift is delivered.

I also changed DW::Shop to use LJ::ModuleLoader instead of having to write out
each individual subclass of DW::Shop::Item and keep it updated.
(Bug 215) New event for virtual gift delivery notification, LJ::Event::VgiftDelivered.

All the fun stuff that comes with ESN.  This has primarily been tested via
/admin/eventoutput.  The link on /manage/settings should maybe not go
live yet, as it's mostly just for testing at this point.
(Bug 215) Add vgift-trans.t for testing transaction methods.

Writing a test seems so easy on the surface... until running it
turns up all sorts of weird bugs in the code... some of them
I was able to fix and others I just had to work around.