Record occurrences of constructors

The occurrence collector now records occurrences of constructors;
that is both definitions and invocations. Test have been added for
the various ways you can define constructors.

Fix #1001622
Merge pull request #25 from mads379/1001622-record-occurrrences-of-constructors

Record occurrences of constructors
Now controls life-cycle of `ProjectIndexJob`s

The life-cycle of the `ProjectIndexJob`s is now managed
by `IndexJobManager`. It listens to `open/close/delete` events
on the projects in the workspace using `ProjectChangeObserver`.

Tests have been aded for both the `ProjectChangeObserver` and
`IndexJobManager`

I now manage dependencies between various components using the
cake pattern.

Fix #1001609, #1001610