Apparently not all hardware revisions of the DIR-615 actually support ipv6, but the C1 revision does. Unfortunately the latest firmware (3.13) breaks ipv6 support, so I had to roll back to 3.12.
First, I put my current dynamic IP into https://members.sonic.net/connections/ipv6tunnel and got back the "Transport" and "Network" addresses.
Then on the Advanced->ipv6 screen of the router configuration page, I selected "IPv6 in IPv4 Tunnel" as the connection type.
For "Remote IPv4 address" I put "126.96.36.199" (garnered from the example configuration on the sonic.net page).
For "Remote IPv6 address" I put the "Transport" address as above.
For "Local IPv4 address" I put my current dynamic IP.
And for "Local IPv4 address" I put the "Transport" address incremented by one.... This is kind of the non-intuitive tricky part, but I guessed it from looking (again) at the example configuration, plus the fact that the Transport address is a /127, implying that the final bit is variable. (Specifically, my transport address was 2001:05a8:0000:0001:0000:0000:0000:0ef8 so I put in 2001:05a8:0000:0001:0000:0000:0000:0ef9 ... well actually 2001:5a8:0:1::0ef9 to be fancy).
I left the IPv6 dns settings blank (the normal IPv4 dns server appears to return the AAAA records necessary).
Finally I de-selected the "Enable DHCP-PD" and under "LAN IPv6 Address" I put the "Network" address plus some arbitrary number in the lower 68 bits. The d-link router always treats this as a /64 (even though sonic gives you a /60), and computers on the LAN will apparently take up their addresses with the same /64 prefix that you enter here.
After applying this, and checking the "status->ipv6" to make sure the network status was "connect" I tested out my new connection and was able to access ipv6.google.com, do the test at test-ipv6.com, etc. (Well, I had some weird dns resolution problems at first on my vista laptop, but an ipconfig /flushdns seemed to fix that). Hooray!
So now that I have an ipv6 connection, what do I do with it?