Expand preprocessor to handle macros which open or close scope.

* semantic/lex-spp.el (semantic-c-end-of-macro): Declare.
(semantic-lex-spp-token-macro-to-macro-stream): Deal with macros which
open/close a scope.  For this, leave an overlay if we encounter a
single open paren and return a semantic-list in the lexer.  When this
list gets expanded, retrieve the old position from the overlay.  See
the comments in the function for further details.
(semantic-lex-spp-find-closing-macro): New function to find the next
macro which closes scope (i.e., has a closing paren).
(semantic-lex-spp-replace-or-symbol-or-keyword): Go to end of closing
macro if necessary.
(semantic-lex-spp-paren-or-list): New lexer to specially deal with
parens in macro definitions.

* bovine/c.el (semantic-cpp-lexer): Use new
`semantic-lex-spp-paren-or-list'.

* tests/cedet/semantic/tests/testsppreplace.c:
* tests/cedet/semantic/tests/testsppreplaced.c: Add tests for the
above.
(semantic-lex-spp-find-closing-macro): Do not ignore case when
seaching for closing macro names.
Remove parent from typedef types

(semantic-expand-c-tag-namelist): Set parent for typedefs to 'nil'.
It does not really make sense to set a parent class for typedefs, and
it can also lead to endless loops when calculating scope for things
like

   typedef struct foo { ... } foo;

were the typedef 'foo' would have 'foo' as a parent.
(cit-wait-for-compilation): Wait at least one second for process
output.  Otherwise, strange races sometimes happen which are however
hard to reproduce.
* cedet-integ-test.el: Wait a bit after `cit-srecode-fill-texi' to
  avoid clash between compilations.
C++: Ignore namespaces as a last resort for finding definitions.

* semantic/bovine/c.el (semantic/analyze/refs): Require.
  (semantic-analyze-tag-references): New override.  Mainly copied from
  the default implementation, but if nothing could be found (or just
  the tag itself), drop all namespaces from the scope and search
  again.  This is necessary for implementations which are defined
  outside of the namespace and only pull those in through 'using'
  statements.
Use random temporary directory for integration tests

* tests/cedet-integ-test.el (cedet-integ-base): Use `make-temp-name'
  so that integrations tests can run in parallel.
  (cedet-integ-test-proj): Delete it after usage.
  (cit-check-compilation-for-error): Show compilation output in
  batch-mode.
* tests/cit-test.sh: Do not remove temporary directory.
Make unit tests use randomized file names

* tests/cedet/semantic/stltest.el:
* tests/cedet/semantic/utest-parse.el:
* tests/cedet/srecode/fields-utest.el:
* tests/cedet/srecode/test-getset.el:
* tests/cedet/srecode/test.el:
* tests/eieio/eieio-test-persist.el: Make all those tests use
  `make-temp-name' for their test files, so that tests can run in
  parallel.
* tests/cedet-integ-test.el (cit-check-compilation-for-error): Use
  correct format-string.
* cedet/semantic/stltest.el: Only delete test file if it exists (which it shouldn't  do, but still...).
* semantic/bovine/c.el (semantic-analyze-tag-references): When
  removing namespaces, use remaining parents in the correct order.
* cedet/ede/generic.el (project-run-target): remove explicit incorrect require

project-run-target had explicit require with old-style package name