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