SplashXPathScanner: Optionally use small_vector from boost

Currently, each row in the intersections vector is allocated separately,
when the first intersection is added.

To avoid these allocations for common simple polygons,
boost::container::small_vector<4, T> is used, which stores up to
4 intersections inline. small_vector is a header-only class.

For the documents from #57 (fdo#96728) and #24 (fdo#78728), the
runtime/memory is significantly reduced (according to /usr/bin/time -v):
(1) $> pdftoppm -r 18 -aa no runsforever-poppler.pdf
(2) $> pdftoppm surf-types.pdf

Before/After
                                  runsforever-poppler |   surf-types
User time (seconds):                2348.08 / 1773.53 |   7.76 /  5.02
Maximum resident set size (kbytes):   46288 /   45896 |  14076 / 13748
6 jobs from optimize_splashxpathscanner2 in 29 minutes and 30 seconds (queued for 1 minute and 34 seconds)
latest
Status Job ID Name Coverage
  Build
passed #72045
build

00:04:58

passed #72050
build_android

00:01:53

passed #72046
build_clang_libcpp

00:05:12

passed #72049
build_clazy

00:03:41

passed #72047
build_gcc_49

00:09:16

passed #72048
build_mingw64_fedora

00:04:28