DOM node based website agent option

I wanted to scrape items from webpages conditionally based on their contents. For instance:

      <div class="item">
        <div class="select-me">bar</div>
        <div class="title">I want to see this title</div>
      </div>
  
      <div class="item">
        <div class="dont-select-me">foo</div>
        <div class="title">I don't want to see this title</div>
      </div>
  
      <div class="item">
        <div class="select-me">bar</div>
        <div class="title">I want to see this title too</div>
      </div>

This change lets `WebsiteAgent`:
 1. select each instance of `.item`
 2. drop every node that doesn't have a child matching `.select-me`
 3. emit the contents of the child matching `.title` as an event

Also includes some refactoring of `WebsiteAgent`.