Redesign the body metadata processing API

The enumeration for controlling whether to process document body
metadata or not via the createDocumentReader function has multiple
issues:

  1.  It does not work well with the single-pass document parser
      implementation approach.

  2.  It is difficult for a document reader to implement.

  3.  The best implementation approach is to use an internal
      version of the redesigned API.

  4.  Proper functionality of document references (page lists, etc.)
      requires full metadata which would require multiple passes
      of the document using the previous API.

The new API resolves all of these issues.