Another 'using namespace' fix

(semantic-analyze-scoped-types-default): If we cannot find a type in
the typecache, also look into the the types we already found.  This is
necessary since in C++, a 'using namespace' can be dependend on a
previous one.

* testusing.cpp: Add test for the above.
* semantic/bovine/c.by (expr-binop): Add MOD.
C/C++: Deal with default parameters in function declarations

* semantic/bovine/c.by (variablearg): Add 'opt-assign'.
C/C++: Parse 'using' statements in the correct order.

(c++-mode:semantic-ctxt-scoped-types): In the case for using
statements outside of function scope, append them in the correct order
instead of using 'cons'.  This is important since using statements may
depend on previous ones.

* tests/cedet/semantic/tests/testusing.cpp: Add test for the above.
Fix parsing of default values and display them in default formatter

* semantic/bovine/c.by (variablearg, varnamelist): Add default values
  so that it can be later expanded into the tag.
  (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and
  remove empty match.
  (multi-stage-dereference): Adapt to above rename.
  (unaryexpression): Use 'symbol' instead of 'namespace-symbol', since
  the latter also leads to an empty match at the end which would make
  this too greedy.

* semantic/format.el (semantic-format-tag-prototype-default):
  Display default values if available.

* semantic/tests/test-fmt.cpp: Add default values.

Parsing of default values for variables and function arguments was
broken with the refactoring done in rev. 7622.  While fixing this, it
turned out that our parser for expressions like

  char *foo = NULL;

was too greedy and also covered the semicolon because of empty matches
in rules 'opt-stuff-after-symbol' and 'opt-template-specifier',
leading to a variable with a default-value of "NULL;". This was fixed
by removing the empty match in 'opt-stuff-after-symbol' and using
'symbol' instead of 'namespace-symbol'.