Exception handling in indexing process

This improves the exception handling in the entire indexing
process, that is, `Index`, `SourceIndexer` and `ProjectIndexJob`,

Generally `Try` is used to indicate that methods might fail. Most
failures related to indexing is handled in `ProcessIndexJob`. If
the index breaks it is deleted and a fresh one is created. If it
can't get the parse trees because the presentation compiler is broken
it will stop the indexing job and log the error. Files that can't
be indexed because of an IOException will be ignored and the
error logged

Tests have been added for the behavior of `Index` and `ProjectIndexJob`
when failures do happen.

Fix #1001629
Merge pull request #22 from mads379/1001629-handle-exceptions

1001629 handle exceptions in Index
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