Generate Table of Contents

In `TableOfContentsFilter`, generate a Table of Contents as a HTML unordered list of links to headers.

  * Add test cases for directly using `HTML::Pipeline::TableOfContentsFilter`
  * Add test cases for using `HTML::Pipeline::TableOfContentsFilter` within a `HTML::Pipeline`
  * Initialize `result[:toc]` to an empty string in `TableOfContentsFilter#call`
  * Initialize `@toc` to an empty string in `TableOfContentsFilter#call`
  * Set `toc` as an `attr_reader` on `TableOfContentsFilter`
  * Extract adding header anchor to `TableOfContentsFilter#add_header_anchor`
  * Define `TableOfContentsFilter#append_toc` for adding a toc item
  * Define `TableOfContentsFilter#finalize_toc` for wrapping toc items in a container
    * Markup from [GitHub Styleguide Styling & CSS Navigation](https://github.com/styleguide/css/8.0), section 8.3.1
  * Update TomDoc
  * Update README.md explaining generated Table of Contents

```ruby
>> require 'html/pipeline'
=> true
>> TocPipeline =
?>   HTML::Pipeline.new [
?>    HTML::Pipeline::TableOfContentsFilter
>>   ]
=> #<HTML::Pipeline:0x007fbd371eb508 @instrumentation_service=nil, @default_context={}, @filters=[HTML::Pipeline::TableOfContentsFilter], @result_class=Hash>
>> orig = %(<h1>Ice cube</h1><p>is not for the pop chart</p>)
=> "<h1>Ice cube</h1><p>is not for the pop chart</p>"
>> result = {}
=> {}
>> TocPipeline.call(orig, {}, result)
=> {:toc=>"<ul class=\"section-nav\">\n<li><a href=\"#ice-cube\">Ice cube</a></li>\n</ul>", :output=>#<Nokogiri::HTML::DocumentFragment:0x3fde9b900538 name="#document-fragment" children=[#<Nokogiri::XML::Element:0x3fde9b9002b8 name="h1" children=[#<Nokogiri::XML::Element:0x3fde9b9093b8 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fde9b909390 name="name" value="ice-cube">, #<Nokogiri::XML::Attr:0x3fde9b90937c name="class" value="anchor">, #<Nokogiri::XML::Attr:0x3fde9b909368 name="href" value="#ice-cube">] children=[#<Nokogiri::XML::Element:0x3fde9b9082c4 name="span" attributes=[#<Nokogiri::XML::Attr:0x3fde9b908260 name="class" value="octicon octicon-link">]>]>, #<Nokogiri::XML::Text:0x3fde9b909520 "Ice cube">]>, #<Nokogiri::XML::Element:0x3fde9b900254 name="p" children=[#<Nokogiri::XML::Text:0x3fde9b90d864 "is not for the pop chart">]>]>}
>> result[:toc]
=> "<ul class=\"section-nav\">\n<li><a href=\"#ice-cube\">Ice cube</a></li>\n</ul>"
>> result[:output].to_s
=> "<h1>\n<a name=\"ice-cube\" class=\"anchor\" href=\"#ice-cube\"><span class=\"octicon octicon-link\"></span></a>Ice cube</h1><p>is not for the pop chart</p>"
```
```
❯ be rake
/Users/simeon/.rbenv/versions/1.9.3-p327-perf/bin/ruby -I"lib:test" -I"/Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib" "/Users/simeon/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/rake-10.1.0/lib/rake/rake_test_loader.rb" "test/html/pipeline/absolute_source_filter_test.rb" "test/html/pipeline/autolink_filter_test.rb" "test/html/pipeline/camo_filter_test.rb" "test/html/pipeline/emoji_filter_test.rb" "test/html/pipeline/image_max_width_filter_test.rb" "test/html/pipeline/markdown_filter_test.rb" "test/html/pipeline/mention_filter_test.rb" "test/html/pipeline/plain_text_input_filter_test.rb" "test/html/pipeline/sanitization_filter_test.rb" "test/html/pipeline/toc_filter_test.rb" "test/html/pipeline_test.rb" 
Run options: 

# Running tests:

......................................................................................

Finished tests in 0.064889s, 1325.3402 tests/s, 2034.2431 assertions/s.

86 tests, 132 assertions, 0 failures, 0 errors, 0 skips
```

:musical_note: Thanks to the tests, this Pull Request has a [soundtrack](http://www.youtube.com/playlist?list=PLO7c5XGNkoE0-RiLsenX1pCbETn0BDEEN). :musical_note: