libxml error handler

Summary: after looking at the memory profiling, i found a lot of allocations coming out of the vector used for collecting libxml errors for later use.

- add new libxml_suppress_errors(bool $enabled) to control discarding errors recieved from libxml/domdocument

one oft-used idiom is:

  libxml_use_internal_errors(true);
  // do something that could possibly generate a lot of libxml errors
  libxml_use_internal_errors(false);

the libxml_use_internal_errors(false) call discards all the errors that were collected.
there's no reason to allocate storage to copy them into the request just to throw them away.

- change storage of xmlError structs to folly::fbvector. the pattern used is:

  v->resize(v->size() + 1)
  auto& e_copy = v->back();
  // manipulate e_copy

perhaps fbvector's reduced growth factor will help a little here. not benchmarked.

- pre-allocate storage for libxml_get_errors()

Reviewed By: @jano

Differential Revision: D1539513
grep for error: and warning: before checking for binary

Summary: I also changed from looking for `Error` on a `make` line to looking for the cmake error which will be ` error: `. Hopefuly this will surface the real reason for failure.

Reviewed By: @edwinsmith

Differential Revision: D1568139