JBIDE-11766 - Work with "Annotation Properties" view breaks JAX-RS explorer

- Using jobs to process Java changes and Resource changes, with a scheduling rule
to avoid concurrency (race conditions).
- Fixing unit tests that now need to wait until the jobs (running asynchronously in another thread)
are done before doing the assertions.
- Fixed usage of compilation unit's working copy vs primary copy in some tests.
- Calling "ICompilationUnit.makeConsistent(IProgressMonitor)" resolves the problem where in some
  cases, some JAX-RS annotations would not be "seen" by the JAX-RS tooling, resulting in elements being removed
- Removed the CompilationUnitRepository which worked as a cache for the Compilation Units AST, but could contain stale data
- Changed the 'Refresh Action' to trigger a real metamodel build ad then refresh the UI, which avoids the need to perform a project build.
It's a recursive method, but the diff on this page does not show it:

private IProject getProject(final IJavaElementDelta delta) {
		final IJavaProject javaProject = delta.getElement().getJavaProject();
		if (javaProject != null) {
			return javaProject.getProject();
		}
		// carry on with children elements.
		for (IJavaElementDelta affectedChild : delta.getAffectedChildren()) {
			return getProject(affectedChild);
		}
		// if no child
		return null;
	}

Basically, the method above traverses a hierarchy of IJavaElementDelta objects and returns the IJavaProject once it is found. If the top-level element is an IJavaModel, it has no associated IJavaProject, so we need to scan the affected children