Add return code to handleComments()
Warn on empty %files -f manifest files

- While there's nothing wrong with packages with no files, a manifest
  file with no files is likely to be an error or mistake of some
  sort and seems worth issuing a warning at least.
- Related to / inspired by ticket #870.
Don't match use or requires within a multi-line print statement

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Make room for SHA224 in digest bundles. Doh.

- Should've really been in commit 20cfa7d2b4c927798ad38126821d194fafd93ffe
  but at the time NSS didn't even support SHA-224 so it was untestable.
  Now that it does, and somebody actually bothered to test...
  Fixes RhBug:1066494.
Rename RPMTAG_SUGGESTS, RPMTAG_ENHANCES and friends to RPMTAG_OLD*

This allows keeping this tags in use by distributions already using them while we add new ones for the upstream implementation of weak dependencies
Add tags for a new implementation of weak requirements
Add support for Recommends:, Suggests:, Supplements: and Enhances:
Add RPMTAG_RECOMMENDNEVRS, RPMTAG_SUGGESTNEVRS, RPMTAG_SUPPLEMENTNEVRS and RPMTAG_ENHANCENEVRS extension tags
Add --recommends, --suggests, --supplements and --enhances aliases to rpm -q
Use --recommends, --suggests, --supplements and --enhances in test case
Add a testcase for RhBug:1045723

- All the %bar macro invocations here should "obviously" behave the
  same, but they dont... in two cases a newline gets eaten out so
  this FAILS atm.
Dont eat newlines on parametrized macro invocations (RhBug:1045723)

- Makes the testcase from commit f082b5baa4dcf9601eeb1e0e520ff06e77dc61c0
  succeed. While the old behavior is non-sensical and most likely entirely
  unintentional, we're changing a very long-standing behavior here (tested
  back to rpm 4.4.x and almost certainly much much older than that) so
  its entirely possible people are actually relying on the old
  behavior. Lets see what breaks...
Perform as-is substitution for %{name} form too, again

- Commit c22d5b12999de6633d89828165ea3ab2112993e8 changed the parsing
  to require a valid name in %{name} macro, but this outlaws existing
  uses such as %{foo_%{bar}_something}. Relaxing the %{name} form
  to use as-is substitution as well allows these to work again.
Revert stricter macro substitution syntax entirely, for now

- Revert back to pre commit c22d5b12999de6633d89828165ea3ab2112993e8
  state wrt macro substitution. The commit does have fixes we want
  but it also breaks valid cases which is not okay. We really need
  a far more thorough macro test suite before these kind of changes,
  and also need to do the changes in more controlled pieces.
Fix duplicate i18n tag checking in spec parse

- The checking from commit 89ed8009eb9b469244dfdff20795493aa3c1d636 was
  woefully broken and inadequate, due to the way these puppies are
  storen in the header. We need to actually look up language presence
  in i18ntable and work from there.
Support old SuSE style weak dependencies in --recommands, --suggests, --supplements and --enhances

and the underlaying extension tags (RPMTAG_RECOMMENDNEVRS, ...)