(Binary Analysis) Changed instruction semantic interface

The old API defined these value-generating constructors:

 ValueType<1> true_();
 ValueType<1> false_();
 ValueType<1> undefined_();
 template<size_t nBits> ValueType<nBits> number(uintmax_t);

It didn't have a way to generate an undefined value that has
a size other than one bit.  So I commandeered the undefined_()
method for this purpose.

  template<size_t nBits> ValueType<nBits> undefined_();

To get an undefined Boolean, call it as:

  undefined_<1>()
(Binary Analysis) Don't assume that default c'tors exist for semantic types

Not all instruction semantics policies define default constructors for
their value types.  So instead of using the default constructor, the
shift_semantics() method explicitly initializes values with the
policy's undefined() method.

Conflicts:

	src/midend/binaryAnalyses/instructionSemantics/x86InstructionSemantics.h
		A similar change will need to be made to the code that generalizes
		the shift and rotate instructions when that commit is merged.
(Documentation) Added missing example output to AsmFunctionIndex documentation
(Binary Analysis) Changed demo to match new instruction semantics API
(Binary Simulator) Adjusted for changing Instruction Semantics interface.
(Ast Query Tests) Less sensitive to GCC version

The testQuery.C was written to be used against a single, hand
crafted specimen, but it actually depended also on the list of
built-in functions.  Therefore, the expected answer varied
across different versions of native compiler and libraries.

I changed this test so rather than looking for a specific number
of function declarations, it checks that the query does in
fact return a list of unique function declarations and that
the lists returned by various queries are consistent with
one another.  This also makes the test suitable for running
against more than just the one specimen (so we can eventually
test multiple input languages if we want).

I also removed the backend() call since that functionality
is presumably tested elswhere.
(Test Harness) Fixed escapes appearing in "rth_run.pl --help"
(def-use) Changed specimens to avoid differences in EDG

* Edg 3.x adds an implicit "return 0" to the end of main()
  unless it can prove that an explicit "return" is
  always executed.

* Edg 4.x never adds an implicit "return 0"

* gcc (tested 4.4.5) does not add an implicit "return 0"

* g++ (tested 4.4.5) adds an implicit "return 0" to main()
  unless it can prove that an explicit "return" is always
  executed, but only if sufficient optimizations are turned on
  (i.e., not "-O0").

* The def-use test (runTest.C) counted graph nodes and was
  therefore sensitive to whether the implicit "return 0" is
  present.

Therefore

* I changed all the test specimens to use a function named
  something other than "main" and added explicit "return 0"
  to each.
(def-use) added ability to test a single specimen at a time

Also,
* Fixed cut-n-pasted comments

* Emit test number in output so we can tell what test goes
  with what command-line-specified number.

Signed-off-by: Robb Matzke <matzke1@llnl.gov>
(def-use) Rewrote the makefile for this test

The edg4 can't yet handle multiple calls to frontend() from a single
program.  Therefore, I broke the one big "runTest all" into separate
tests using the Rose Test Harness.  Additional features:

* Makefile.am is much smaller

* Tests can be run in parallel

* Passing tests are rerun only when their dependencies change

* Eliminated the huge amount of spew from passing tests. Only failing
  tests spew.  Output from passing tests is in the *.passed files.

* Output from failing tests is identifiable by test when tests are run
  in parallel.

* Removed unused files from Git
(def-use) turned on debugging

This is okay to do now that successful tests don't spew and is
useful output when they fail.
(smgit) The "push" command accepts refspecs containing colons

* Now you can push like "smgit push origin HEAD:dquinlan/bugfix-rc".
  In each submodule it runs:
      git push origin REF:refs/heads/dquinlan/bugfix-rc
  where REF is the submodule commit corresponding to HEAD in
  the main ROSE module.  Last, it pushes the specified
  refspec in the main ROSE module.

* Removed old behavior that tried to reuse existing branch
  names in the submodule. Now, if you push to branch
  "dquinlan/bugfix-rc" in the ROSE repo, you'll also get
  a branch of the same name in the remote EDG repo.

* It is now possible to delete branches using smgit. By
  default, it will only delete in the ROSE module.  If you add
  "--force" it will also delete in the submodules. Deletion
  in submodules is by name, not ref-corresponding-to-rose.  I.e.,
  running "smgit push --force origin :dquinlan/bugfixes-rc"
  will delete the specified branch in ROSE and all submodules.
Merge commit 'ebde2baea530ea5e16426a0be1197cd418e0e772' into HEAD
(def-use) clean up extra cfg.dot temporary file
Merge commit 'ecc1a2e34f5120058fcf0141c70d619557194b53' into HEAD
(configure error) Adrian fixed this problem
Merge commit '4766f9f71afcf5b9bc71fb76179e499f1030b860' into HEAD