Better summary generation.

This patch improves the summary generation by:
  - Ensuring that elements are not truncated.
  - Working properly with any content format (not just markdown).
  - Allowing the user to manually indicate the summary.
  - Allowing the user to truncate the summary at headers.

The new summary generation function works as follows:
 - If a summary element (`<tag class="summary">...</tag>`) is specified
   in the content, return it.
 - If summary_lines > 0, truncate after the first complete element where
   the number of summary lines is greater than summary_lines.
 - If summary_stop_at_header is true, stop before the first header that
   is after some non-empty content. That is, include any headers at the
   top of a post but not subsequent ones.
 - Finally, if any non-whitespace text was truncated, the `ellipsis`
   class is added to the summary element.

It also lets the user override the summary settings on a per-post basis.
Use a div instead of a span to wrap the summary

Because spans can't wrap block elements...
Simplify the stop at header functionality

Make `summary_stop_at_header` stop at the first header encountered,
regardless of whether or not the summary is empty. I couldn't think of a
legitimate use case where a user would want to stop at the second
header.

Also, clean up stuff.
Fix and, then, and line counting
Method parentheses are needed without then
Correctly render summary content
Merge pull request #170 from Stebalien/better-summary-generation

Better summary generation