Fix #675: add archive.org as an embed source

Includes one passing test but could probably use the addition of a few more?
Fix #676: Add video.yandex.ru as embed source

Not speaking Russian I can't read relevant documentation to make sure
I've got the formats of individual video URI-components correct but I've
gone for an approximation based on what examples I can find.
Fix #678 (add episodecalendar.com as embed source)

Test URI will 404 but is correctly formed

Test URI is correctly-formed but not a real link (none was provided)
Merge pull request #718 from Darael/embed-sources-675-676-678

Add embed sources (fixes #675 #676 #678)
Update test-count to reflect @49aed18a38

(and the preceding two commits; these added tests but did not increase the count)
Merge pull request #719 from Darael/719-test-counts

Increase the test-count to reflect changes pulled in #718
Move Tabula-Rasa based layers into their own s2layers.dat

For clarity, and to make it easy to get a list of which layers are based
on Tabula Rasa and which ones have their own highly individual styling
Merge pull request #721 from afuna/group-tr-styles

Move Tabula-Rasa based layers into their own s2layers.dat
Add "pop" support to S2

This adds a new language keyword: pop. It returns the last item in an
array (like a stack), leaving the array one item shorter.

Usage like:

    var int myitem = pop $myarray;

It can be used anywhere you can use an expression, as you might expect.
Add push function to S2

This adds the push operator to the S2 language, which allows you to push
simple values onto arrays of the same type.

Usage:

    var int[] iarray
    push $iarray, 5

Also works with expressions on the right side, so you can be complicated
there if you really want. This is a statement, so it doesn't return
anything and you can't use it in other statements.
Update push support to allow pushing arrays

This makes the push command allow you to push an array onto an array,
which basically appends the items from the array onto the first array.
Merge pull request #504 from zorkian/s2-poppush

S2 pop/push language extension

For #726
Avoid "excessive recursion" error in S2

* Uses push/pop and iteration instead of recursion

* Works for all official core2 layouts, site styled comment pages.
  Should also work for custom core2 layouts which haven't overridden
  EntryPage::print_comments

* Updated core1.s2 reference implementation -- but there's nothing we
  can do for the custom layouts here because most custom core1 layouts
  reimplement this method

* Also prevents recursion error in comment count calculation for the
  page summary module

Fixes #726.
Stop nesting the .comment-thread divs when too deep

Browsers will stop applying visual styles to elements that are very
deeply nested. Our .comment-thread class wraps around each comment +
its replies (instead of each comment), but unfortunately, browsers
aren't very happy with that on long nested threads, and things look
broken.

(In firefox, links lose styling and everything becomes a pile of text at
the bottom. In chrome, the comments are spaced apart, but lose
indentation).

So since we know approximately when this happens, let's stop nesting
before we reach that point. Early in the thread, .comment-thread will
wrap around the comment and its replies. At 180 replies in,
.comment-thread will act like the .comment-wrapper (avoiding further
nesting)

For #726.
Merge pull request #727 from afuna/apply-pop-push-bug-726

Handle deeply-nested comment threads
Cleanup whitespace
Cleanup whitespace take 2